Hallo,
du kannst auch alles andere hinzufügen, du hast ja 4 Byte (SizeOf(TObject) [ein pointer halt]) "platz".
um ein record hinzuzufügen müsstes du manuell erstellen mit "New(Pointer variable vom Record)" und hinzufügen. Bei löschen und freigeben der Liste musst du die records vorher manuell freigeben mit z.B. Dispose().
Delphi-Quellcode:
type
TMyRecord = packed record
FBlah: Integer;
FFoo: ShortString;
FBar: Smallint;
end;
PMyRecord = ^TMyRecord;
procedure CreateOrInitFooBarOrso;
var
LPMyRec: PMyRecord;
begin
myList := TStringList.Create;
myList.OwnsObject := FALSE; //wichtig da "objects" ja keine TObject-nachfahren beinhaltet
for what so ever do
begin
//Record erstellen
New(LPMyRec)
LPMyRec^.FBlah := 123456789
LPMyRec^.FFoo := 'Huhu ich bin ein shortstirng';
LPMyRec^.FBar := 1;
myList.AddObject('ein String', TObject(LPMyRec));
end;
end;
procedure FreeIt;
var
LPRec: PMyRecord;
begin
while MyList.Count > 0 do
begin
LPRec := PMyRecord(myList.Objects[0]);
Dispose(LPRec);
end;
myList.Free;
end;