Hallo zusammen,
ich schäme mich ein bischen aber ich verstehe da ein paar Sachen nicht.
Delphi2006 erstellt mir beim Singelton folgendes:
Delphi-Quellcode:
type
TSingleton = class
strict private
constructor Create;
class var
FInstance:TSingleton;
public
class function GetInstance: TSingleton;
procedure MeldeDich; // von mir ;-)
end;
1) Was genau bedeuten die Anweisungen "class var" und "class function" ?
In der Hilfe steht was von klassenstatisch , aber was ist das?
2) Warum brauche ich nicht "Static" angeben. (So verstehe ich die Hilfe)
Zitat:
Klassenstatische Methoden
Auf klassenstatische Methoden kann, wie auf Klassenmethoden, ohne Objektreferenz zugegriffen werden. Im Gegensatz zu regulären Klassenmethoden haben klassenstatische Methoden keinen Self-Parameter. Sie können außerdem auf keine Instanzelemente zugreifen. (Sie können aber auf Klassenfelder, Klasseneigenschaften und Klassenmethoden zugreifen.) Wiederum im Gegensatz zu Klassenmethoden können klassenstatische Methoden nicht als virtual deklariert werden.
Um eine Methode als klassenstatisch zu deklarieren, fügen Sie das Wort static an die Deklaration an:
type
TMyClass = class
strict private
class var
FX : Integer;
strict protected
// Hinweis: Methoden für den Zugriff auf Klasseneigenschaften müssen als klassenstatisch deklariert werden.
class function GetX: Integer; static;
class procedure SetX(val: Integer); static;
public
class property X: Integer read GetX write SetX;
class procedure StatProc(s: String); static;
end;
Wie eine Klassenmethode kann eine klassenstatische Methode über den Klassentyp (also ohne Objektreferenz) aufgerufen werden, z. B.:
TMyClass.X := 17;
TMyClass.StatProc('Hello');
3) Wie würde man so ein Object wieder frei geben?
Wenn ich es mit Free frei gebe kann ich immer noch MeldeDich aufrufen.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
SchokoladenKocher.Free;
SchokoladenKocher.MeldeDich; // klappt
end;
Wenn ich dann noch mal Free aufrufe gibt es eine Zugriffsverletzung.
Ihr sieht: ich weiß nicht wirklich was ich da mache