Mortal-Shadow - So 15.11.09 23:43
Titel: Objekte kopieren
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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var Objekt1, Objekt2 : TMeinObjekt; begin Objekt1 := TMeinObjekt.Create(Paramter) Objekt2 := Copy(Objekt1); end; |
jaenicke - Mo 16.11.09 00:16
Dafür genügt es dein Objekt von TPersistent abzuleiten und die Methode AssignTo zu überschreiben:
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.