Als je types van je items niet gelijk zijn is het m.i. een beetje onlogisch om er abstract overheen te willen itereren. Maar je zou inderdaad een Variant of een TValue (uit System.RTTI) kunnen gebruiken.
Dan kun je van de items ook weer een generic list maken. Of een dictionary, als je het itemnummer wilt storen. Overigens is het dan wel makkelijker om van TItems een class te maken.
Delphi Code:
TItems = class
private
FItems: TDictionary<Integer, TValue>;
public
constructor Create;
destructor Destroy; override;
property Item: TDictionary<Integer, TValue> read FItems write FItems;
end;
constructor TItems.Create;
begin
FItems := TDictionary<Integer, TValue>.Create;
end;
destructor TItems.Destroy;
begin
FItems.Free;
end;
// ...
Items := TItems.Create;
for i := 0 to DataSet.RecordCount - 1 do
begin
Value := TValue.From(Dataset.FieldByName('item' + i.ToString).Value);
Items.Item.Add(i, Value);
end;
En als je het echt via RTTI wilt is dit een aardige start: http://www.drbob42.com/uk-bug/hood-01.htm
Bookmarks