Welchen Mehrwert soll die lokale Variable bringen?
Man vermeidet damit die globale Variable Form2, die leider automatisch von der Delphi
IDE angelegt wurde.
(Dass Delphi automatisch pro Formular eine globale Variable anlegt ist eine sehr grosse Unschönheit an Delphi. Es verleitet die Programmierer dazu immer diese globalen Variablen zu benützen und lässt manche auch glauben Formularklasse und Formular wäre das Gleiche.)
Diese Variable sollte man einfach auskommentieren, wenn man im Vorraus weiss, dass man TForm2 nur als modales Formular benützen wird.
Wenn man die globale Variable Form2 benützt, dann hinterlässt man eine Art von Tretmine.
Irgendein unbedarfter Programmier könnte schreiben Form2.Show und schon würde man auf Speicher zugreifen, der schon freigegeben wurde.
Und zum Free:
Zitat:
Jede Ereignisbehandlungsroutine für das Formular oder für dessen untergeordnete Objekte sollte Release anstelle von Free (Delphi) oder Delete (C++) benutzen. Ansonsten kann ein Speicherzugriffsfehler auftreten.
Da hast du etwas falsch verstanden.
Release braucht man nur dann, wenn man das
eigene Formular aus einer Ereignisbehandlungsroutine freigeben möchte.
Für andere Formulare, die nicht zur Formularklasse gehören in dessen Kontext man sich gerade befindet, trifft das nicht zu.
Wenn man also irgendwo Code wie diesen sieht
IrgendeinForm.Release
, dann hat man einen Fehler entdeckt. Nur
Release
oder
self.Release
wäre ein sinnvoller Aufruf.