Ein kleines Nebenprodukt was beim Experimentieren in Delphi 2010 entstanden ist.
Ich weiß, Singletons sind böse...
Trotzdem hier mal eine ab Delphi 2010 funktionierene (evtl auch Delphi 2009 oder eher)
Unit, die aus einer normalen Klasse ein Singleton macht, wovon weder ein zweites mal eine Instanz erzeugt noch die bestehende Instanz freigegeben werden kann. Hab es bisher im kleinen Stil getestet und dachte, evtl interessiert sich hier der eine oder andere für son krankes Zeug
Die Benutzung ist denkbar einfach, nachfolgend kurz, was so alles funktioniert:
Delphi-Quellcode:
uses
Singleton;
type
TFoo = class
private
FText: string;
public
property Text: string read FText write FText;
end;
type
TFooSingleton = Singleton<TFoo>;
var
FooSingleton: Singleton<TFoo>;
Foo: TFoo;
begin
Foo := FooSingleton;
TFooSingleton.Instance.Text := 'Hello Foo';
ShowMessage(Foo.Text);
end;
Die Instanz der Klasse wird beim Starten des Programms (ich vermute in Initialization Reihenfolge der Units, genau hab ich es noch nicht getestet) erstellt und beim Beenden (Finalization der
Unit Singleton.pas) wieder freigegeben. Der
VMT Hack wird vorher schon (Vermutung: finalization der
Unit wo der jeweilige Singleton benutzt wird) entfernt.