type
TIndentifier = class
private
FOldValue: string;
FNewValue: string;
FStoredValue: string;
public
constructor Create(const OldValue, NewValue, StoredValue: string);
property OldValue: string read FOldValue write FOldValue;
property NewValue: string read FNewValue write FNewValue;
property StoredValue: string read FStoredValue write FStoredValue;
end;
Это ваш базовый класс. Вы используете это для каждого значения. Тогда у вас есть два варианта. Вы можете просто сделать это так:
var
Values: TStringList;
begin
Values.AddObject('SomeValue', TIndentifier.Create('OldValue', 'NewValue', 'StoredValue'));
Это напоминает мне, насколько похож на швейцарский нож TStringList :). Будьте осторожны, чтобы освободить объекты в старых версиях delphi, или установите TStringList в качестве владельца объектов в последних версиях.
Или вы можете иметь список объектов, если вам нужно больше, чем просто имя:
type
TValue = class(TIndentifier)
private
FName: string;
public
property Name: string read FName write FName;
end;
var
Value: TValue;
Values: TObjectList;
begin
Value := TValue.Create('OldValue', 'NewValue', 'StoredValue');
Value.Name := 'SomeValue';
Values.Add(Value);
Но что мне действительно нравится в таких случаях, так это мощь XML. Это экономит так много кода, но с другой стороны скрывает объявления. С моим SimpleStorage вы можете сделать что-то вроде этого:
var
Value: IElement;
Storage: ISimpleStorage:
begin
Storage := CreateStorage;
Value := Storage.Ensure(['Values', 'SomeValue']);
Value.Ensure('OldValue').AsString := 'OldValue';
Value.Ensure('NewValue').AsString := 'NewValue';
Value.Ensure('StoredValue').AsString := 'StoredValue';