![]() |
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:
ergibt den Fehler "strDLL: unbekannter Bezeichner", obwohl strDLL als private in der Unit deklariert ist. Geht sowas überhaupt?
function DLLTest(): integer;
external strDLL; Grüße Frank |
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 |
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:
Gruß
function DLLTest(): integer;
external 'Pfad zu deiner dll mit dem dateinamen ( kann auch ein relativer pfad sein)'; Ken |
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 |
Re: Unterschiedliche DLLs einbinden
wenn du sie dynamisch lädst geht das
|
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; |
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