Einzelnen Beitrag anzeigen

shmia

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

Re: AddObject mit einem Interface?

  Alt 9. Apr 2008, 11:02
Da muss man etwas tricksen:
Delphi-Quellcode:
procedure Eintragen(IntPtr: IMyInterface);
begin
  IntPtr._AddRef; // Referenzzählung "austricksen"
  cmbTest.AddObject('Test', TObject(IntPtr));
end;
Würde man nicht mit AddRef eingreifen, kann es passieren, dass das Objekt auf den der Interfacezeiger verweist,
automatisch freigegeben wird. (=> Access Violation)

Beim löschen ist dann ebenfalls eine Korrektur nötig:
Delphi-Quellcode:
var
   p :Pointer;
begin
   p := Pointer(stringliste.Objects[i]);
   if Assigned(p) then
      IUnknown(p)._Release;
end;
Andreas
  Mit Zitat antworten Zitat