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;