Moin!
Ich fange gleich an und gebe euch ein Beispiel für mein Problem:
Programm
Unit(.dpr):
Delphi-Quellcode:
begin
lfoo := TFoo.Create;
lbar := TBar.Create;
try
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
finally
lbar.Free;
lfoo.Free;
end;
end.
Wie ihr seht erzeuge ich zwei Klassen die Global gültig sind, mein Problem ist nur. Bei Application.Run; wird die Messageschleife ja normalerweise abgearbeitet und der Code bleibt stehen(in diesem Abschnitt), tut er auch, soweit so gut. Wenn ich meine Mainform schließe, läuft
zuerst der Code in der
DPR zu Ende und dann startet die OnDestroy Methode meiner Mainform. Warum ist das so? Das Problem, welches ich hiermit habe ist, dass ich im onDestroy Event der Form noch auf lfoo zugreifen muss, dieses aber nichtmehr vorhanden ist.
Momentan habe ich es, unschön wie ich finde, so gelöst, dass ich den Ressourcenschutzblock entfernt habe und einfach lbar und lfoo nach dem letzten Benutzen in OnDestroy freigebe. Das kann's doch nicht sein, oder?
Ich hoffe ihr könnt mir zu einer besseren Methode verhelfen.
Danke schonmal!
Gruß,
Max