Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Scheinbar Verständnissproblem bezüglich Interfaces...

  Alt 20. Feb 2007, 12:53
Meine Variante b) von Oben ist eigentlich eine einfache Möglichkeit Objektvariablen und Interfaces zu mischen.
Wenn das Objekt z.B. in einem Formular eingebettet ist, dann reicht es:
Delphi-Quellcode:
private
   FMyObj: TObject; // Objektvariable
   FIMyObj : IUnknown; // Interfacepointer (darf auch ein anderes Interface sein z.B. IPValues)

procedure TForm1.FormCreate;
begin
   FMyObj:= TObject.Create;
   FIMyObj := FMyObj as IUnknown;
end;
Du brauchst dich ab jetzt selbst nicht mehr um die Freigabe kümmern. (Create and Forget)
Wenn das Formular zerstört wird, wird auch FIMyObj entfernt und alles ist in Butter.
Das Gleiche gilt ganz allgemein für Objekte, die in einem anderen Objekt eingebettet sind.

Du kannst auch den Sourcecode von TComponent anschauen und besonders auf VCLComObject achten.
TComponent ist so eine Art Zwitterwesen, dass einmal als normales Objekt arbeitet aber auch der Referenzzählung von COM unterliegen kann.
Der "Trick" von oben ist aber deutlich einfacher.
Andreas
  Mit Zitat antworten Zitat