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 Unterschiedliche DLLs einbinden (https://www.delphipraxis.net/22820-unterschiedliche-dlls-einbinden.html)

FBrust 24. Mai 2004 15:12


Unterschiedliche DLLs einbinden
 
Hallo,

in meinem Programm gibt es einen Bereich, den ich gerne in eine DLL auslagern möchte. Allerdings brauche ich je nach Niederlassung unterschiedliche DLLs, bei denen die Funktionen unterschiedliche Berechnungen durchführen (allerdings innerhalb des Programms gleiche Namen haben, d. h. die Funktion Auswertung() läuft in der einen DLL anders ab als in der anderen).

Nun möchte ich aber nicht alle DLLs mitliefern, sondern nur die DLL, die in der jeweiligen Niederlassung benötigt wird. Ich dachte daher, dem Programm eine INI-Datei mitzugegeben, in der der
Name der zu verwendenden INI-Datei hinterlegt und bei Programmstart eingelesen wird.

Allerdings stolpere ich schon über den Namen der DLL als Variable zu laden:

Delphi-Quellcode:
function DLLTest(): integer;
   external strDLL;
ergibt den Fehler "strDLL: unbekannter Bezeichner", obwohl strDLL als private in der Unit deklariert ist. Geht sowas überhaupt?

Grüße

Frank

FBrust 24. Mai 2004 15:20

Re: Unterschiedliche DLLs einbinden
 
Hallo,

noch eine Anmerkung:

Nachdem ich die Definition von strDLL vom private- in den var-Bereich der Unit verschoben habe, erhielt ich die Fehlermeldung "Konstantenausdruck erwartet", scheint also nicht zu gehen, aber vielleicht hat ja einer von Euch eine Idee....


Grüße
Frank

CenBells 24. Mai 2004 15:37

Re: Unterschiedliche DLLs einbinden
 
hallo,

der name der dll darf nicht im uses teil auftauchen sonst bindest du den teil wieder statisch ein.

Dein Code muss so heißen
Delphi-Quellcode:
function DLLTest(): integer;
   external 'Pfad zu deiner dll mit dem dateinamen ( kann auch ein relativer pfad sein)';
Gruß
Ken

FBrust 24. Mai 2004 16:36

Re: Unterschiedliche DLLs einbinden
 
Hallo,

also muss ich den Namen der DLL fest angeben und kann ihn nicht aus einer Variable entnehmen, oder?

Gruß

Frank

Pseudemys Nelsoni 24. Mai 2004 16:49

Re: Unterschiedliche DLLs einbinden
 
wenn du sie dynamisch lädst geht das

Meflin 24. Mai 2004 17:22

Re: Unterschiedliche DLLs einbinden
 
das geht so:
Delphi-Quellcode:
type
  TInstallHook = function(Hwnd: THandle): Boolean; stdcall;
  TUninstallHook = function: Boolean; stdcall;

var
  InstallHook: TInstallHook;
  UninstallHook: TUninstallHook;
  lib: Cardinal;

begin
  lib := LoadLibrary('keyboardhook.dll');
  if lib <> INVALID_HANDLE_VALUE then begin
    InstallHook := GetProcAddress(lib, 'InstallHook');
    UnInstallHook := GetProcAddress(lib, 'UninstallHook');
  end; // else ERROR
end;

FBrust 24. Mai 2004 19:54

Re: Unterschiedliche DLLs einbinden
 
Hallo,

danke für Eure Antworten, dynamisches Laden ist in diesem Fall wirklich sinnvoller.

Grüße

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz