Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu Instanzen (https://www.delphipraxis.net/37085-frage-zu-instanzen.html)

stoermi 30. Dez 2004 19:34


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???

roderich 30. Dez 2004 19:57

Re: Frage zu Instanzen
 
ja, wenn Du mit "speichern in einer eigenen Variable" eine Zuweisung per := meinst:

Delphi-Quellcode:
procedure TForm2.GiveItToMe(MyInstOrig: TMyClass); // kein var nötig, da Klasse quasi pointer ist
var
  MyInstNew: TMyClass;
begin
  MyInstNew := MyInstOrig;
  MyInstNew.Caption := 'Huhu';
...
end;
dann ist hinterher die originale Instanz genauso geändert wie die neue.

Du darfst halt blos nicht die MyInstNew freigeben, sonst ist deine originale Instanz auch weg....


Roderich

Luckie 30. Dez 2004 19:58

Re: Frage zu Instanzen
 
Probier es doch einfach aus.

Joe24 30. Dez 2004 19:59

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