Hallo Zusammen,
vielleicht hatte das ja jemand von schon einmal...
Also, ich habe eine Typbibliotheken via *.TLB eingebunden. Dort gibt es dann eine Klasse "TAdapter" die auch einige Events anbietet. Nun ist es so, dass diese Klasse nur funktioniert, wenn ich Initialize aufrufen. Tue ich das nicht, werden alle Methodenaufrufe mit dem
OLE-Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" quittiert. Leider führt der Aufruf von Initialize aber auch dazu, dass bei der Freigabe von t1 der TServerEventDispatch nicht frei gegeben wird. Beim Durchsteppen kann ich feststellen, dass TServerEventDispatch.InternalRefCount nicht auf 0 zurück läuft. Ich bräuchte also vielleicht so etwas wie UnInitialize oder so. Aber so etwas wurde von Delphi beim Import der Typbibliotheken nicht angelegt. Die Methode "Dispose" hilft jedenfalls nicht. Wie also werde ich den Memory Leak los? Ist das überhaupt mein Problem, oder muss dass jemand anderes lösen (Embarcadero oder der Hersteller des
OLE-Servers)?
Delphi-Quellcode:
// Automatisch angelegter Code:
procedure TAdapter.Initialize;
begin
DefaultInterface.Initialize;
end;
Delphi-Quellcode:
var
t1: TAdapter;
begin
t1 := TAdapter.Create(nil);
try
t1.Initialize; // <- wenn ich das weg lasse gibt es kein Memory Leak
finally
t1.Free;
end;
end;