AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.Net dll in Win32

Ein Thema von Barthiboy · begonnen am 15. Jul 2015 · letzter Beitrag vom 21. Jul 2015
Antwort Antwort
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#1

.Net dll in Win32

  Alt 15. Jul 2015, 07:15
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.
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#2

AW: .Net dll in Win32

  Alt 15. Jul 2015, 07:17
Anhang
Angehängte Dateien
Dateityp: rar Test.rar (2,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.332 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: .Net dll in Win32

  Alt 15. Jul 2015, 08:07
Wir haben dafür eine eigene DLL (mit Oxygene, aber das geht auch mit C#) erstellt, die die .NET DLL kapselt und die nötigen Funktionen als normale DLL Exporte bereitstellt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (15. Jul 2015 um 08:10 Uhr)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#4

AW: .Net dll in Win32

  Alt 15. Jul 2015, 08:54
Hallo, Danke für deine Antwort.

Ich habe leider auch die eigentliche .Net dll keinen Einfluss.
Die bekomme ich von einer externen Firma. Ich kann maximal fragen ob sie diese also COM kompatibel
erzeugen können.

Aber ich verstehe ich nicht ganz wo die Funktionen eigentlich landen, bzw. wie ich diese aufrufen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: .Net dll in Win32

  Alt 15. Jul 2015, 09:05
Du sollst die .net DLL auch nicht ändern, sondern mit einer weiteren DLL kapseln und Delphi-freundlicher gestalten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: .Net dll in Win32

  Alt 15. Jul 2015, 09:26
Warum kramst Du den alten Beitrag aus?
Sven Harazim
--
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#7

AW: .Net dll in Win32

  Alt 21. Jul 2015, 13:15
Hallo noch einmal.
Also ich habe es jetzt hinbekommen.
Meine größte Hilfe war hier.
http://forums.devshed.com/delphi-pro...hi-231122.html

Danke an alle beteiligten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz