Ich versuche gerade ein Projekt zu verwirklichen, daß von Objekten/Objektlisten
gebrauch macht. Da ich nach reichlich Internetrecherche viele offene Fragen dazu habe
würde ich gerne die wichtigsten von meiner Liste streichen.
Die aktuell verwendeten Objekte haben momentan nur ein paar strings.
Eine Objektlist ist global eine lokal definiert.
Code: Alles auswählen
Bufferobj:= TMyRecObj.Create;// lokale Variable
Bufferobj.MyRecord.ScanID:= 123;
BufferObjList.Add(Bufferobj);// BufferObjList ist eine globale Variable
Bufferobj.MyRecord.ScanID:= 456;
BufferObjList.Add(Bufferobj);
Wenn ich die procedure verlasse, muß ich die lokale Variable mit free zerstören
oder wird die, weil lokal, sowieso zerstört.
Code: Alles auswählen
Bufferobj:= TMyRecObj(bufferobjlist[0]);// Bufferobj ist vom Typ TMyRecObj
Behält die Liste das Objekt?
Code: Alles auswählen
for i:= 0 to 5 do
begin
MyObjList2[i+5] := MyObjList1[i];
end;
Werden hier nur die Pointer kopiert oder die Inhalte der Felder
ich brauche 2 unabhängig bearbeitbare Listen (echte Kopie).
Oder muß ich da für den Inhalt jedes Feld separat kopieren?
Die globale Objektliste soll im ursprünglichem Zustand erhalten bleiben,
die lokale Objektliste soll sortiert und bearbeitet werden. Zum Schluß landet diese dann in einem Stringgrid.
Ich hab versucht, einiges in einem Testprogramm auszuprobieren, bekomme es aber nicht wirklich zum Laufen.
Das liegt halt daran, daß ich nicht genau weiß was ich da tue.
Was ich grundsätzlich auch nie wirklich geschnallt habe, wann wird bei Variablen kopiert, wann nur der Pointer
so daß eine von 2 Variablen im Speichernirvana verschwindet.
Ich hoffe jetzt auf erhellende Antworten von euch.
Danke schon mal im Voraus
Gruß
NoCee