Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Klassen aus einer DLL nutzen? (https://www.delphipraxis.net/103002-klassen-aus-einer-dll-nutzen.html)

mjenke 8. Nov 2007 06:21


Klassen aus einer DLL nutzen?
 
Guten Morgen, alle miteinander!

Ich habe folgendes Problem: Von einem anderen Dienstleister habe ich eine DLL zur Verfügung gestellt bekommen, in der Klassen definiert sind. Diese Klassen will ich nutzen. Aber wie mache ich das?

Wenn ich veröffentlichte Methoden aus einer DLL nutzen möchte, kann ich das folgendermaßen tun (am Beispiel einer MathType-DLL):

Delphi-Quellcode:
type

  TMTInitAPI = function (
    options: SmallInt;
    timeout: SmallInt ): Integer; stdcall;

[...]

implementation

[...]
constructor TMathType.Create;
var
  InitAPI: TMTInitAPI;
begin

  FHandleWLL := LoadLibrary ( 'C:\Programme\MathType\MathPage\MathPage.wll' );
  FHandleDLL := LoadLibrary ( 'C:\Programme\MathType\System\MT5.dll' );

  [...]

  @InitAPI := GetProcAddress ( FHandleWLL, 'MTInitAPI' );
  if @InitAPI <> nil then ShowMessage ( 'InitApi: ' + IntToStr ( InitAPI ( mtinitLAUNCH_NOW, -1 ) ) )
  else ShowMessage ( 'InitApi ist nil' );

  [...]

end;
Wichtig ist hierbei natürlich der Part um "GetProcAdress". Aber wie gehe ich vor, wenn es sich um Klassen handelt?

:?:

Bernhard Geyer 8. Nov 2007 06:34

Re: Klassen aus einer DLL nutzen?
 
Ist es wirklich eine DLL? Für Delphi? Werden wirklich Klassen veröffentlicht oder doch nur C-Kompatible Funktionen?

mkinzler 8. Nov 2007 06:40

Re: Klassen aus einer DLL nutzen?
 
Dll unterstützen eigentlich keine Klassen im Interface. Stammt die Dll von dir? Enthält sie Delphi-Klassen?
Dann bräuchtest du einen Proxy-Mechanismus.

mjenke 8. Nov 2007 07:56

Re: Klassen aus einer DLL nutzen?
 
Es handelt sich wirklich um eine DLL. Und wie gesagt: von einem Fremdanbieter. Das heisst, wir würden das Ding kaufen, wenn wir damit arbeiten können.

Es gibt (da es sich im Moment um eine Testversion handelt) nur eine rudimentäre Dokumentation, die lediglich eine Beschreibung der in der DLL hinterlegten Klassen beinhaltet. Das heisst, wenn ich erst einmal wüsste, wie ich diese Klassen erwische, werde ich sie vermutlich auch anwenden können.

Übrigens ist es keine DLL, die speziell für Delphi geschrieben wurde. Wenn ich das bisher richtig sehe, ist es eine .NET-Geschichte. Es wird auf C#, VisualBasic und C++ verwiesen. Allerdings fehlen Beispiele.

Ich habe übrigens auch beim Anbieter nachgefragt, bisher aber noch keine Antwort erhalten. Die Anfrage ging allerdings auch erst heute morgen raus...

:)

Bernhard Geyer 8. Nov 2007 08:06

Re: Klassen aus einer DLL nutzen?
 
Zitat:

Zitat von mjenke
Übrigens ist es keine DLL, die speziell für Delphi geschrieben wurde. Wenn ich das bisher richtig sehe, ist es eine .NET-Geschichte.

Dann stehen dir mehrer Möglichkeiten offen. Entweder du läßt von Windows eine COM-Klasse anlegen und gehst über COM oder du nimmst Tools wie Managed VCL und ersparst dir die COM-Registrierung.

Kedariodakon 8. Nov 2007 08:48

Re: Klassen aus einer DLL nutzen?
 
Ist das vielleicht ne Typenbibliotek? Kannst du sie in Delphi importieren?
Komponente => ActiveX importieren (Delphi 7)


Bye Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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