Nur mal nebenbei: Globale Objekte sollte man über ein Singleton absichern, sprich: eine Funktion zum Zugriff deklarieren. Im Initialzation-Abschnitt wird der Zeiger auf Nil gesetzt, im finalization das Objekt zerstört und in der Funktion erstelle, falls es noch nicht erstellt wurde, also z.B. so:
Delphi-Quellcode:
Unit Foo;
Interface
Function MyStringList: TStringList;
Implementation
Var
oMyList: TStringList;
Function MyStringList: TStringList;
Begin
If Not Saaigned(oMyList)
Then oMyList:=TStringList.Create;
Result:=oMyList;
End;
...
Initialization
oMyList:=Nil;
Finalization
FreeAndNil(oMyList);
End.
Dann ist auch gewährleistet, dass diese Liste auch erstellt wird bei Benutzung. So wird allerdings die vorzeitige Zerstörung nicht verhindert, da muss man dann noch aufpassen. Solange man nur über die Funktion zugreift und den Destruktor nicht ruft, passiert nix.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>