Benutzer-Werkzeuge

Webseiten-Werkzeuge


delphi:language:firsttimecall

Definition einer Klasse die sich selber kreiert:

type
  TFooClass = class
  private
    class var _Default: TFooClass;
    class destructor Destroy;
    class function GetDefault: TFooClass; static;
  public
    class property Default: TFooClass read GetDefault;
  private
    Whatever : Integer;
  public
    constructor Create;
    destructor Destroy; override;
 
    procedure DoThis; overload;
  end;

Und so wird das ganze definiert!

{ TFooClass }
 
constructor TFooClass.Create; // Wie immer
begin
  inherited Create;
  Whatever := 42; // Definieren was man sonst so braucht.
end;
 
class destructor TFooClass.Destroy;
begin
  FreeAndNil( _Default );
end;
 
destructor TFooClass.Destroy;
begin
  Whatever := -1;
  inherited;
end;
 
procedure TFooClass.DoThis;
begin
  Whatever := WhatEver + 1;
end;
 
class function TFooClass.GetDefault: TFooClass;
begin
  if not Assigned( TFooClass._Default ) then
    TFooClass._Default := TFooClass.Create;
 
  Result := TFooClass._Default;
end;

Also kann ich die Classen immer aufrufen mit:

TFooClass.Default.DoThis; // Ohne Create...
delphi/language/firsttimecall.txt · Zuletzt geändert: 2015/03/14 21:48 von gerdbernau

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki