Autor Beitrag
Mortal-Shadow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 110



BeitragVerfasst: So 15.11.09 23:43 
Hi,

ich wollte wissen, ob es möglich ist eine Kopie eines Objektes herzustellen.
Das neue Objekt soll die gleichen Variablen-inhalte wie das erste haben, aber von diesem unabhängig sein danach.
Also irgendwie sowas:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
Objekt1, Objekt2 : TMeinObjekt;
begin
Objekt1 := TMeinObjekt.Create(Paramter)
//Tue etwas mit Objekt1
Objekt2 := Copy(Objekt1);
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 16.11.09 00:16 
Dafür genügt es dein Objekt von TPersistent abzuleiten und die Methode AssignTo zu überschreiben:
ausblenden Delphi-Quelltext
1:
2:
  protected
    procedure AssignTo(Dest: TPersistent); override;
Dort müssen dann die Daten des eigenen Objekts an das übergebene (Dest) übertragen werden.
Danach kannst du dann wie bei Objekten von Delphi (z.B. TFont) mit Assign die Daten an ein anderes übergeben.

Alternativ kannst du auch selbst entsprechende Methoden zum direkten Klonen oder Zuweisen ohne TPersistent basteln, aber manuell musst du es jedenfalls machen. Theoretisch könnte man auch mit RTTI arbeiten, das würde ich aber in keinem Fall empfehlen, das gibt nur Probleme, wenn dann etwas schief geht.