Einzelnen Beitrag anzeigen

DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Zugriff auf procedure und funktionen nicht instanziierter Klassen / Objekte

  Alt 11. Feb 2013, 22:42
sehr gut, ich bin nicht der einzige der da schaut wie ein pferd ins uhrwerk.

hier mal ein einfaches bsp.

Delphi-Quellcode:
  Tc = class(TComponent)
    private
     F : TComponent;
     class var I : Integer;
     function GetPrivateF : String;
    public
     procedure t;
    published
     property getF : String read GetPrivateF;
  end;

function Tc.GetPrivateF: String;
begin
 ShowMessage('Here i am');
 Application.ProcessMessages; //wir aufgerufen von einem nicht existierenden Objekt!!!
 Application.DoSomething(Self); //ruft eine weitere Methode aus nicht exisitierendem Objekt auf, mit einem NIL zeiger auf Self.
 Exit('Ok')
end;

procedure Tc.t;
begin
 ShowMessage('test');
 if Assigned(Self) then
    ShowMessage('Self is Assigned')
   else
    ShowMessage('Self is not Assigned');//analog Free (wo ich geacht hätte es wäre eine art class procedure und daher mit nil aufrufbar)
end;


procedure TForm6.Button1Click(Sender: TObject);
var C : TC;
begin
 C:=nil;
 //ShowMessage(C.Name);
 ShowMessage(C.getF);
end;

procedure TForm6.Button2Click(Sender: TObject);
var C : TC;
begin
 C:=nil;
 //ShowMessage(C.Name);
 C.t;
end;

Geändert von DSCHUCH (11. Feb 2013 um 22:44 Uhr)
  Mit Zitat antworten Zitat