Hallo zusammen,
ich sitze jetzt schon seit geraumer Zeit an einem Problem.
Ich habe eine .Net
dll bekommen und versuche diese unter Delphi einzubinden.
Hierfür habe ich wie gesagt die
dll und auch eine .tlb
Mein Versuch bis jetzt war hier über den
COM Experten eine Anbindung zu schaffen.
Hierbei ist die unten angeähngte ItacIms_TLB.pas
Allerdings fehlen hier die Methoden.
Es wurde zwar das interface _Mdata angelegt aber sonst auch schon nichts.
Ich hänge mal die
dll und die tlb mit an. Vielleicht kann mir irgendwer hierbei helfen.
Es ist übrigens nur eine Testdll mit nur einer funktion.
Der Inhalt:
Code:
ItacIms.Mdata mdata = new Mdata();
string x = mdata.GetKuckuck();
string y = mdata.GetInput("HUHU");
Ich danke für eure Hilfe
Gruß
Christian
Delphi-Quellcode:
unit ItacIms_TLB;
// ************************************************************************ //
// WARNUNG
// -------
// Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek
// generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine
// andere Typbibliothek) reimportiert wird oder wenn der Befehl
// 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der
// Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und
// alle manuell vorgenommenen Änderungen gehen verloren.
// ************************************************************************ //
// $Rev: 52393 $
// Datei am 15.07.2015 07:25:43 erzeugt aus der unten beschriebenen Typbibliothek.
// ************************************************************************ //
// Typbib.: C:\DelphiXE5\Projekte\NetTest\ItacIms.tlb (1)
// LIBID: {B2D883E2-3EF3-4AB8-9C36-C85205529531}
// LCID: 0
// Hilfedatei:
// Hilfe-String:
// Liste der Abhäng.:
// (1) v2.0 stdole, (C:\Windows\SysWOW64\stdole2.tlb)
// (2) v2.4 mscorlib, (C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb)
// SYS_KIND: SYS_WIN32
// ************************************************************************ //
{$TYPEDADDRESS OFF} // Unit muss ohne Typüberprüfung für Zeiger compiliert werden.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
{$ALIGN 4}
interface
uses Winapi.Windows, mscorlib_TLB, System.Classes, System.Variants, System.Win.StdVCL,
Vcl.Graphics,
Vcl.OleServer,
Winapi.ActiveX;
// *********************************************************************//
// In der Typbibliothek deklarierte GUIDS. Die folgenden Präfixe werden verwendet:
// Typbibliotheken : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Nicht-DISP-Interfaces: IID_xxxx
// *********************************************************************//
const
// Haupt- und Nebenversionen der Typbibliothek
ItacImsMajorVersion = 1;
ItacImsMinorVersion = 0;
LIBID_ItacIms: TGUID = '
{B2D883E2-3EF3-4AB8-9C36-C85205529531}';
IID__Mdata: TGUID = '
{36653466-CC12-3A69-9F48-E0366930357A}';
CLASS_Mdata: TGUID = '
{976229DF-F00C-3A19-9D4D-0A54213B2014}';
type
// *********************************************************************//
// Forward-Deklaration von in der Typbibliothek definierten Typen
// *********************************************************************//
_Mdata =
interface;
_MdataDisp =
dispinterface;
// *********************************************************************//
// Deklaration von in der Typbibliothek definierten CoClasses
// (HINWEIS: Hier wird jede CoClass ihrem Standard-Interface zugewiesen)
// *********************************************************************//
Mdata = _Mdata;
// *********************************************************************//
// Interface: _Mdata
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {36653466-CC12-3A69-9F48-E0366930357A}
// *********************************************************************//
_Mdata =
interface(IDispatch)
['
{36653466-CC12-3A69-9F48-E0366930357A}']
end;
// *********************************************************************//
// DispIntf: _MdataDisp
// Flags: (4432) Hidden Dual OleAutomation Dispatchable
// GUID: {36653466-CC12-3A69-9F48-E0366930357A}
// *********************************************************************//
_MdataDisp =
dispinterface
['
{36653466-CC12-3A69-9F48-E0366930357A}']
end;
// *********************************************************************//
// Die Klasse CoMdata stellt die Methoden Create und CreateRemote zur
// Verfügung, um Instanzen des Standard-Interface _Mdata, dargestellt
// von CoClass Mdata, zu erzeugen. Diese Funktionen können
// von einem Client verwendet werden, der die CoClasses automatisieren
// will, die von dieser Typbibliothek dargestellt werden.
// *********************************************************************//
CoMdata =
class
class function Create: _Mdata;
class function CreateRemote(
const MachineName:
string): _Mdata;
end;
// *********************************************************************//
// OLE-Server-Proxy-Klassendeklaration
// Server-Objekt : TMdata
// Hilfe-String :
// Standard-Interface: _Mdata
// Def. Intf. DISP? : No
// Ereignis-Interface:
// TypeFlags : (2) CanCreate
// *********************************************************************//
TMdata =
class(TOleServer)
private
FIntf: _Mdata;
function GetDefaultInterface: _Mdata;
protected
procedure InitServerData;
override;
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
procedure Connect;
override;
procedure ConnectTo(svrIntf: _Mdata);
procedure Disconnect;
override;
property DefaultInterface: _Mdata
read GetDefaultInterface;
published
end;
procedure Register;
resourcestring
dtlServerPage = '
ActiveX';
dtlOcxPage = '
ActiveX';
implementation
uses System.Win.ComObj;
class function CoMdata.Create: _Mdata;
begin
Result := CreateComObject(CLASS_Mdata)
as _Mdata;
end;
class function CoMdata.CreateRemote(
const MachineName:
string): _Mdata;
begin
Result := CreateRemoteComObject(MachineName, CLASS_Mdata)
as _Mdata;
end;
procedure TMdata.InitServerData;
const
CServerData: TServerData = (
ClassID: '
{976229DF-F00C-3A19-9D4D-0A54213B2014}';
IntfIID: '
{36653466-CC12-3A69-9F48-E0366930357A}';
EventIID: '
';
LicenseKey:
nil;
Version: 500);
begin
ServerData := @CServerData;
end;
procedure TMdata.Connect;
var
punk: IUnknown;
begin
if FIntf =
nil then
begin
punk := GetServer;
Fintf:= punk
as _Mdata;
end;
end;
procedure TMdata.ConnectTo(svrIntf: _Mdata);
begin
Disconnect;
FIntf := svrIntf;
end;
procedure TMdata.DisConnect;
begin
if Fintf <>
nil then
begin
FIntf :=
nil;
end;
end;
function TMdata.GetDefaultInterface: _Mdata;
begin
if FIntf =
nil then
Connect;
Assert(FIntf <>
nil, '
DefaultInterface ist NULL. Die Komponente ist nicht mit dem Server verbunden. Sie müssen vor dieser Operation "Connect" oder "ConnectTo" aufrufen');
Result := FIntf;
end;
constructor TMdata.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TMdata.Destroy;
begin
inherited Destroy;
end;
procedure Register;
begin
RegisterComponents(dtlServerPage, [TMdata]);
end;
end.