Announcement

Collapse
No announcement yet.

DLL nicht im Programmpfad

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DLL nicht im Programmpfad

    Hallo!

    Ich habe meine "Detail-Formulare" alle in
    einzelne DLL's gepackt und das klappt auch so weit sehr gut. Nun möchte ich aber nicht 134
    DLL's im Hauptpfad des Programms liegen haben,
    sondern in einem Unterordner "\Formulare" wie
    kann ich nun den Pfad zum laden der DLL's anpassen?

    function ShowAddressForm(Datensatz : Integer; Modus: Integer;
    Firma:Integer; Provider: WideString; Connection: WideString):Integer;
    external 'AddressForm.dll';

    Jürgen

  • #2
    Hallo Jürgen,

    ich befürchte, Dein Problem lässt sich nicht lösen, sofern Du Deine Dlls statisch importierst, da bei der Einbindung der Dll-Funktionen eine String-<B>Konstante</B> als Fundort für die Dll-Datei erwartet wird. Also
    <PRE>
    function ShowAddressForm(...):Integer; external
    ExtractFilePath(Application.ExeName) + 'Formulare\AddressForm.dll';
    </PRE>
    funktioniert <B>nicht</B>.

    Du wirst wohl Deine Dlls dynamisch importieren müssen, was etwas mehr Schreibarbeit bedeutet:
    <PRE>

    var
    DllPath: string;
    hDll: integer;
    begin
    DllPath := ExtractFilePath(Application.ExeName) + 'Formulare\AddressForm.dll';
    hDll := LoadLibrary(PChar(DllPath);
    if hDll <> 0 then
    begin
    @FShowAddressForm := GetProcAddress(hDll, ‘ShowAddressForm);
    ...
    </PRE>
    FShowAddressForm ist eine (als privat deklarierte) Prozedurvariable Deines aufrufenden Formulars.

    Viele Grüße Wolfgang

    Comment

    Working...
    X