Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#16

AW: Record an 2tes Formular übergeben

  Alt 13. Dez 2010, 09:41
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.
  Mit Zitat antworten Zitat