Wenn es sich um eine
RAD-Anwendung handelt, dann ist die Verwendung der globalen Form-Variablen erlaubt (gehören ja zum Konzept), aber
nur lesend und die
Instanzen müssen tabu sein (gehört ebenfalls zum Konzept).
Die Ausgangsfrage:
In einer legacy Applikation habe ich an ganz vielen Orte
Form1 := nil
gesehen im
OnClose
(
Form1.FormClose
), anstellen von
Action := ca.Free
.
Was ist der Unterschied wenn ich in
FormClose
- Action := ca.Free
- Form1 := nil
- FreeAndNil(Form1)
aufrufe?
In einer
RAD-Anwendung sind alle drei Punkte
falsch, denn alle verletzen die Vereinbarung, die ich mit
RAD eingehe.
In einer
nicht RAD-Anwendung ist der erste Punkt erlaubt aber die anderen beiden Punkte sind
falsch, denn dort sind die
globalen Form-Variablen absolut tabu (am besten werden die sofort gelöscht).
Es gibt auch noch so einen Mischmasch aus
RAD und
nicht RAD, den würde ich aber dringend empfehlen zu eliminieren. Also nur das Haupt-Formular (auch zu finden auch unter
Application.MainForm
) wird zum Anwendungsstart erzeugt, alle anderen dynamisch.