Zitat von
sh17:
Solange TObjectList.Create(true) aufgerufen wurde, werden bei Free auch die Items freigegeben.
Das habe ich so gemacht, aber jetzt erst verstanden.
Zitat von
sh17:
Delphi-Quellcode:
procedure TCarPos.AssignTo(var Dest: TCarPos);
begin
Dest.FZeitpunkt := FZeitpunkt;
Dest.FCarID := FCarID;
end;
In diesem Fall ist die Verwendung von Dest.FZeitpunkt und Dest.FCarID kein Problem, da die Set-Methoden der Properties Zeitpunkt und CarID auch nix anderes machen. Sollte allerdings in den Set-Methoden weiterer Code stehen, der mit dem Wert vorher noch etwas macht, dann musst Du folgendes aufrufen:
Delphi-Quellcode:
procedure TCarPos.AssignTo(var Dest: TCarPos);
begin
Dest.Zeitpunkt := Zeitpunkt;
Dest.CarID := CarID;
end;
Ah, schön langsam Dämmert, ich dachte nur die Privaten Felder dürfen geclont werden.
Ich werde sofort auf Properties umstellen.
Zitat von
sh17:
Delphi-Quellcode:
procedure TCarPosCollection.AssignTo(var Dest: TCarPosCollection);
var
i:integer;
begin
Dest.FZustand := FZustand;
{kopiere alle items vom typ TCarPos}
for i := 0 to count-1 do
Dest.add(items[i].clone);
end;
wäre ggf noch ein Dest.Clear zu Beginn sinnvoll.
Dest.Clear habs eingebaut.
Es funkt alles einwandfrei.
Super Leute besten Dank und schöne Grüße.
Kostas