Hallo,
ich benötige eine Funktion, mit der ich ein neues Object B erzeuge und die Daten von Object A gleich hineinkopieren kann, um dann dieses Objekt in einer Objectliste zu speichern.
<br><br>
Bisher habe ich folgendes gemacht:
<br><br>
<pre>
function MyClass.copy: MyClass;
begin
result:= MyClass.create;
result.AttribA:= self.AttribA;
...
end;
</pre><br>
Aufgerufen habe ich das dann immer mit<br>
<pre>
var Object1: MyClass;
MyList: TObjectList;
begin
MyList:= TObjectList.create;
Object1:= MyClass.create;
MyList.Add(Object1.copy);
...
Object1.free;
MyList.free;
end;
</pre>
Dies hat bisher immer ganz gut geklappt. Aber in einem Fall verliert self nach dem Aufruf von create seine Attributwerte. Kann mir das jemand erklären? Und gibt es einen besseren Weg dies zu bewerkstelligen?
Danke schon mal,
Yvonne
ich benötige eine Funktion, mit der ich ein neues Object B erzeuge und die Daten von Object A gleich hineinkopieren kann, um dann dieses Objekt in einer Objectliste zu speichern.
<br><br>
Bisher habe ich folgendes gemacht:
<br><br>
<pre>
function MyClass.copy: MyClass;
begin
result:= MyClass.create;
result.AttribA:= self.AttribA;
...
end;
</pre><br>
Aufgerufen habe ich das dann immer mit<br>
<pre>
var Object1: MyClass;
MyList: TObjectList;
begin
MyList:= TObjectList.create;
Object1:= MyClass.create;
MyList.Add(Object1.copy);
...
Object1.free;
MyList.free;
end;
</pre>
Dies hat bisher immer ganz gut geklappt. Aber in einem Fall verliert self nach dem Aufruf von create seine Attributwerte. Kann mir das jemand erklären? Und gibt es einen besseren Weg dies zu bewerkstelligen?
Danke schon mal,
Yvonne
Comment