Hallo!
Eines vorne weg: Ich bin kein echter Experte für DLLs und
COM. Ich weiß (grob) um was es geht. Aber das meiste habe ich mir zusammen gesucht, als ich es brauchte und weiß heute leider nicht mehr was ich gemacht habe...
Also:
In einem meiner Programme verwende ich ein Objekt, das in einer fremden (nicht von mir erstellt)
DLL zur Verfügung gestellt wird. Den Zugriff auf diese Funktionen erhalte ich per
COM.
Als ich das Programm geschrieben haben, habe ich mit Hilfe von Delphi aus der
DLL und der zugehörigen TLB die Datei EineDLLLib_TLB.pas erstellt. Diese
Unit enthält die Deklarationen für die Interfaces zum Zugriff auf die
DLL-Funktionen. Zusätzlich war ist in dieser
Unit noch eine "
OLE-Server-Proxy-Klassendeklaration" vorhanden:
Delphi-Quellcode:
// *********************************************************************//
// OLE-Server-Proxy-Klassendeklaration
// Server-Objekt : TKDF
// Hilfe-String : KDF Class
// Standard-Interface: IKDF
// Def. Intf. DISP? : No
// Ereignis-Interface:
// TypeFlags : (2) CanCreate
// *********************************************************************//
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
TKDFProperties=
class;
{$ENDIF}
TKDF =
class(TOleServer)
private
FIntf: IKDF;
...
Mit der Klasse TKDF konnte ich mir dann einfach ein Objekt erzeugen und so auf die Funktionen der
DLL zugreifen. Soweit so gut.
Nun gibt es eine neue Version der
DLL und ich wollte für diese wieder eine _TLB Datei erstellen um das Objekt nutzen zu können. Dafür habe ich ich die .tlb Datei in Delphi (2006) geöffnet und registriert. Dadurch wird automatisch eine _TLB Datei erzeugt. Die Datei enthält auch so ziemlich alles, was die alte _TLB Datei enthalten hat, nur die Deklaration für den
OLE-Server-Proxy nicht. Ich kann somit kein Objekt erzeugen.
Ich habe daraufhin noch einmal versucht mit der alten .dll und der alten .tlb eine _TLB.pas Datei zu erstellen. Das klappt auch, nun fehlt aber auch hier die Deklaration für den
OLE-Server-Proxy. Ich muss beim ersten Mal also irgendwas anders gemacht haben. Ich finde ahber leider nicht mehr raus, was...
Kann mir jemand sagen, was ich falsch mache und ich eine _TLB.pas Datei erstelle, die ein
OLE-Server-Proxy Deklaration enthält?
Ich verwende wie gesagt Delphi 2006. Soweit ich mich erinnere habe ich die _TLB.pas beim erste Mal auch schon mit Delphi 2006 erzeugt. Mit Delphi 6 erhalte ich das gleiche Ergebnis.
Ich habe auch schon versucht tlibimp.exe manuell zu verwenden, aber das zeigt auch kein anderes Ergebnis.
Weiß jemand was zu tun ist?
Besten Dank
Ares