![]() |
AW: TForm.Name bekommt fortlaufende Nr angehängt
Dann hätte ich ja gar nicht gemerkt, dass dem Form in OnClose der Boden weg gezogen wird :wink:
Gibt es eigentlich eine sinnvolle Erklärung, warum ein Free nicht automatscih nillt? Obiger Fehler kam nur, weil nach dem externen Form1.Free ein folgender check über assigned(Form1) immer noch true meldet, was vielleicht theoretisch erklärbar ist, praktisch aber Mist ist. Somit bedeutet das, dass jeder Aufruf so aussehen muss:
Delphi-Quellcode:
Könnte auch schreiben
Form1 := TForm1.Create(nil);
try Form1.Showmodal; finally Form1.Free; Form1:=nil; end;
Delphi-Quellcode:
Aber welchen Sinn macht es, dass Free nicht automatisch Nillt?
FreeAndNil(Form1)
|
AW: TForm.Name bekommt fortlaufende Nr angehängt
Welche Referenz soll denn genilt werden? Das kann der Compiler nicht wissen.
|
AW: TForm.Name bekommt fortlaufende Nr angehängt
Doch, das hättest du gemerkt, da in der Form nicht auf "deine" Varialbe zugegriffen werden kann, außer du baust es selbst so, dass die eigene Variable auch global ist, was man nicht sollte.
Bzw. es hätte dort der Compiler geknallt, wenn er die Variable nicht findet, nachdem zu sie global entfernt hast. Beim Aufruf von der Methode Free wird nur die Objekt-Referenz reingegeben, also der Wert der Variable ins Self kopiert. Die Variable ist der Methode also nicht bekannt. Darum ist ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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