![]() |
Frage zu Instanzen
Hallo!
Kurze Erläuterung: Ich erstelle in einem Form eine Instanz einer Klasse. Dann rufe ich auf diesem Form eine Prozedure einer anderen Form-Unit auf und übergebe die Instanz mit ihren Werten. Diese Prozedure speichert dann die Instanz in einer eigenen Variable. Die Frage: Wenn ich nun Eigenschaften der Instanz, die in der neuen Variable gespeichert ist, ändere, sind diese dann auch in der ursprünglichen Instanz geändert, wenn das zweite Form wieder geschlossen wurde??? |
Re: Frage zu Instanzen
ja, wenn Du mit "speichern in einer eigenen Variable" eine Zuweisung per := meinst:
Delphi-Quellcode:
dann ist hinterher die originale Instanz genauso geändert wie die neue.
procedure TForm2.GiveItToMe(MyInstOrig: TMyClass); // kein var nötig, da Klasse quasi pointer ist
var MyInstNew: TMyClass; begin MyInstNew := MyInstOrig; MyInstNew.Caption := 'Huhu'; ... end; Du darfst halt blos nicht die MyInstNew freigeben, sonst ist deine originale Instanz auch weg.... Roderich |
Re: Frage zu Instanzen
Probier es doch einfach aus.
|
Re: Frage zu Instanzen
Erzeugst du eine neue Instanz mit dem Constructor Create und kopierst dann die Wete der Eigenschaften der einen Instanz auf die andere mit der Funktion Assign( Source : [class]), vorausgesetzt diese ist implementiert, dann wirkt sich das ändern von Eigenschaften auf die jeweils andere Instanz der Klasse nicht aus.
Wird eine Instanz mit [object1] := [object2] referenziert werden in jedem Fall die Eigenschaften von [Object2], also der Instanz der Klasse, verändert. [Object1] verweist lediglich auf [Object2] und gibt dessen Werte wieder, sowie ändert die Eigenschaften der referenzierten Instanz indirekt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz