Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TForm.Name bekommt fortlaufende Nr angehängt (https://www.delphipraxis.net/204614-tform-name-bekommt-fortlaufende-nr-angehaengt.html)

norwegen60 12. Jun 2020 10:42

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:
  Form1 := TForm1.Create(nil);
  try
    Form1.Showmodal;
  finally
    Form1.Free;
    Form1:=nil;
  end;
Könnte auch schreiben
Delphi-Quellcode:
FreeAndNil(Form1)
Aber welchen Sinn macht es, dass Free nicht automatisch Nillt?

DeddyH 12. Jun 2020 10:54

AW: TForm.Name bekommt fortlaufende Nr angehängt
 
Welche Referenz soll denn genilt werden? Das kann der Compiler nicht wissen.

himitsu 12. Jun 2020 11:13

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 Delphi-Referenz durchsuchenFreeAndNil auch eine Prozedure, welche die Variable als Speicher-Referenz (VAR) rein bekommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr.
Seite 2 von 2     12   

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