Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TForm Freigeben (https://www.delphipraxis.net/119935-tform-freigeben.html)

Pro_RJ 3. Sep 2008 13:20

Re: TForm Freigeben
 
Zitat:

Zitat von Pro_RJ
Aber wann bzw wo?
Im destructor kann ich Form1 nicht auf NIL setzten da anschließend eien Zugriffsverletzung kommt.


Ich habe es auch gerade mal mit der normalen Klasse TForm getestet. Hier tritt genau das gleiche Phänomen auf.
Ich dachte erst das es an der neuen Klasse liegt aber dem ist nicht so.

Pro_RJ 3. Sep 2008 13:25

Re: TForm Freigeben
 
PS: es ist egal ob das Fenster über Application.CreateForm(TForm1, Form1) oder Form1 := TForm1.Create(); erzeugt wird.
Die Frage ist nur wir kann ich nach dem Schließen des Fensters die Variable Form1 wider auf NIL setzen?

mkinzler 3. Sep 2008 13:28

Re: TForm Freigeben
 
Aus der Klasse heraus nicht.

Pro_RJ 3. Sep 2008 13:31

Re: TForm Freigeben
 
Zitat:

Zitat von mkinzler
Aus der Klasse heraus nicht.

verstehe ich leider nicht ganz :gruebel:
Aber wann könnte ich dann die Variable Form1 wieder auf nil setzten?

mkinzler 3. Sep 2008 13:34

Re: TForm Freigeben
 
Die Klasse kennt die Referenzvariablen, die zur Laufzeit existieren ja nicht.

Pro_RJ 3. Sep 2008 14:03

Re: TForm Freigeben
 
AHHH :idea: :idea: jetzt hab ich verstanden wo das eigentliche Problem liegt.
Gibt es eine möglichkeit die die Referenzvariablen zu ermitteln?
Wer ruft eigentichlich den destructor nach dem FormClose auf?

mkinzler 3. Sep 2008 14:09

Re: TForm Freigeben
 
Die Methode Close

sirius 3. Sep 2008 14:13

Re: TForm Freigeben
 
und warum rufst du anstatt Form1.close nicht freeandnil(form1) auf? Da wird die Form doch auch vorher geschlossen und deine referenz ist nil.

Pro_RJ 3. Sep 2008 14:39

Re: TForm Freigeben
 
Gibt es die möglichkeit sich eine Referenzvariablen zu speichern?

bsp. dem Constructor übergeben : CreatePCB(AOwner : TComponent; Var Reference);
Diese Referenz im Object speichern und bei Destroy diese Referenz auf NIL setzten?
geht sowas?

sirius 3. Sep 2008 14:47

Re: TForm Freigeben
 
Jein, nur unter gewissen Umständen. Aber das ergibt eine schöne Fehlerquelle, wenn diese Umstände nicht eingehalten werden. Und das ist meist der Fall.
==> Nein

Edit: Von wo wird denn das Fenster geschlossen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz