Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#1

TServerEventDispatch - Memory Leak

  Alt 7. Jul 2017, 11:05
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;
  Mit Zitat antworten Zitat