TList ist eigentlich ja nur eine Liste von Pointern. Das heißt du musst dich selbst um den speicher kümmern und den dann auch wieder freigeben. (anstelle von dem Record kannst du auch nen String nehmen)
Delphi-Quellcode:
type
Pmyrecord = ^TmyRecord; //Pointer auf unseren eigentlichen Typ
Tmyrecord = record //das ist unser eigentlicher Typ
wert1: Integer;
wert2: Integer;
wert3: Byte;
end;
var mylist: TList; //unsere TList in der wir die Pointer speichern
myrecord: PMyRecord; //zeiger auf unseren Typ
begin
mylist := TList.Create; //erstmal die Liste erzeugen
new(myrecord); //dann holen wir uns soviel speicher wie "myrecord" benötigt und lassen myrecord auf den geholten speicher zeigen
mylist.Add(myrecord); //unseren pointer in die liste eintragen
[...] //irgendwas machen
myrecord := mylist.Items[0]; //lassen myrecord wieder auf unseren speicher zeigen
myrecord^.wert1 := 3455; //und können jetzt die daten davon ändern (dach kann bei diesem beispiel auch weggelassen werden)
myrecord^.wert2 := 5347;
myrecord^.wert3 := 75;
[...] //machen wieder irgendwas anderes
dispose(mylist.Items[0]); //jetzt müssen wir den speicher wieder freigeben den wir am Anfang mit "new" geholt haben
mylist.Free; //und zu guter letzt können wir noch unsere liste wieder freigeben - READY