Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.063 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

Re: Kopie eines Item aus der TObjectList

  Alt 23. Jan 2007, 08:29
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
  Mit Zitat antworten Zitat