ObjectLists sind (im Gegensatz zu Records) vergleichsweise problemlos und einfach zu handhaben. Ich hab noch Delphi2007, deshlab muß ich die property Items überschreiben (brauchst du bei <TTest> nicht).
Delphi-Quellcode:
uses
.. Contnrs;
type
TTest = class
private
FD1: Double;
FN1: Int64;
FI1: Integer;
FL1: LongInt;
FS1: String;
FS2: String;
FS3: String;
public
property D1: Double read FD1 write FD1;
property N1: Int64 read FN1 write FN1;
property I1: Integer read FI1 write FI1;
property L1: LongInt read FL1 write FL1;
property S1: String read FS1 write FS1;
property S2: String read FS2 write FS2;
property S3: String read FS3 write FS3;
procedure Clear;
procedure Assign(Value: TTest);
end;
TTestList = class(TObjectList)
private
function GetItems(Index: integer): TTest;
public
property Items[Index: integer]: TTest read GetItems; default;
end;
..
{ TTest }
procedure TTest.Assign(Value: TTest);
begin
end;
procedure TTest.Clear;
begin
end;
{ TTestList }
function TTestList.GetItems(Index: integer): TTest;
begin
Result := TTest(inherited Items[Index]);
end;
..
var
TestList: TTestList;
Index: integer;
begin
TestList := TTestList.Create;
try
// Hinzufügen von Items;
Index := TestList.Add(TTest.Create);
TestList[Index].Clear; // Das z.B. ginge bei einem Record nicht
TestList[Index].S1 := 'Hello TObjectList';
// Löschen von Items;
TestList.Delete(Index);
finally
TestList.Free;
end;
end;