Einzelnen Beitrag anzeigen

Kamil

Registriert seit: 16. Aug 2002
178 Beiträge
 
#4

Re: Zugriffverletzung beim Verwenden von Interfaces

  Alt 14. Dez 2003, 23:39
Zeig mal ein wenig Code.

Ein paar Tipps:
-überschreibe _AddRef und _Release (mit dem selben Code wie TInterfacedObject) und schau dir den Wert von FRefCount an. Sobald er 0 wird, wird dein Objekt (Interface) zertört.
-beim Zugriff auf dein Objekt/Interface immer mit Assigned prüfen ob das Objekt noch existiert.

Ich weiß nicht wie gut du dich mit Interfaces auskennst:
Delphi-Quellcode:
//Dieser Code ist richtig:
procedure TForm1.Button8Click(Sender: TObject);
var
  MyInterface: IMyInterface;
  MyObject: TMyInterfacedObject;
begin
  MyObject:=TMyInterfacedObject.Create;
  MyInterface:=MyObject;
  MyObject.DoSomething;
  MyInterface.DoSomething;
end; //der Destruktor TMyInterfacedObject.Destroy wird automatisch aufgerufen!!!

//Dieser Code ist FALSCH!!!!!!
procedure TForm1.Button8Click(Sender: TObject);
var
  MyInterface: IMyInterface;
  MyObject: TMyInterfacedObject;
begin
  MyObject:=TMyInterfacedObject.Create;
  MyInterface:=MyObject;
  MyObject.DoSomething;
  MyInterface.DoSomething;
  MyObject.Free;
end; //Der Destruktor wird zwei mal aufgerufen -> Exception (Invalid pointer operation.)
  Mit Zitat antworten Zitat