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;