Ächz! Delphi treibt mich mal noch zum Wahnsinn!
Falls mal jemand ein ähnliches Problem hat:
Nach tagelangem googlen bin ich auf einen
Link von Beckhoff gestossen.
Darin wird ganz unten bei "Comment" auf eine falsche Deklaration des Delphi Wrapper Imports hingewiesen. Die mussten dann speziell für Delphi eine andere Methode einführen.
Ich habe nun die ursprüngliche Deklaration der automatisch erzeugten *tlb.pas von:
function LoadFromMem(buffer: OleVariant; pixelformat: enumFormat): Integer; dispid 54;
auf
function LoadFromMem(var buffer: OleVariant; pixelformat: enumFormat): Integer; dispid 54;
Schau an: Das Memory Leak ist weg.
Weshalb aber Delphi 2007 den Parameter als Referenz übergibt obwohl der Parameter nicht als Var deklariert ist -
und warum Delphi XE beim Import die Deklaration falsch macht weiss der Geier.
Natürlich ist das nicht die Endlösung. Denn bei einer neuen Version des
ActiveX wird die Korrektur überschrieben.
Das ganze hat mich etwa eine Woche gekostet. Ich bin platt.
Das Dumme ist einfach dass einem bei Delphi niemand (mehr) helfen kann.
Das
ActiveX sowie die darunterliegende native
API wird weltweit stark genutzt.
Aber entweder die Wrapper Schicht mit .net oder java. Darunter mit C oder C++.
Einige Delphi Nutzer sind vorhanden aber alle <= D2007.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.