![]() |
Zugriff auf DLL aus DPR-File
Hallo,
ich habe (dank dieses Forums :-) ) eine Form in eine DLL ausgelagert. Jetzt mochte ich dieses Form / diese Funktionen jetzt direkt aus meiner DPR heraus ausführen - es handelt sich um einen Setup-Dialog, der auch direkt beendet werden kann - dann soll das Hauptfenster gar nicht erst zu sehen sein. In der DPR kann ich aber nicht initialization und finalization verwenden, kann ich diese Befehle dann probelemlos direkt zwischen begin & end setzen ? Initalization:
Delphi-Quellcode:
finalization:
// --- DLL laden ---
lib := LoadLibrary(@dllname[1]); if lib <> 0 then begin { @SetupDlgShowNormal := GetProcAddress(lib, 'SetupDlgShowNormal'); } @SetupDlgShowModal := GetProcAddress(lib, 'SetupDlgShowModal'); end;
Delphi-Quellcode:
Grüße
// --- DLL entladen ---
if lib <> 0 then FreeLibrary(lib); // -------------------- Sebastian |
Re: Zugriff auf DLL aus DPR-File
genau, in der dll das ganze einfach zwischen begin und end machen. Weitere möglichkeite. Binde eine weitere Unit in das dll-projekt ein und verwende dort initialization und finalization.
|
Re: Zugriff auf DLL aus DPR-File
Zitat:
lg Sebastian |
Re: Zugriff auf DLL aus DPR-File
Hi!
So, habe das in der DPR wie folgt gemacht :
Delphi-Quellcode:
Kann man das so machen ?????
program sampleprg;
uses Windows, Controls, Dialogs, Forms, MainUnit in 'MainUnit.pas' {Mainform}; const dllname = 'SetupDlg.dll'; URL ='http://beispiel.url/test.php'; // --- für DLL --- type TFNSetupDlgShowModal = function(parent: Pointer; getURL: PChar): Integer; stdcall; var setupsuccess: integer; lib: HMODULE; SetupDlgShowModal: TFNSetupDlgShowModal = nil; // --------------- {$R *.res} begin Application.Initialize; Application.Title := 'Beispiel DLL Prog'; // --- DLL laden & ausführen --- lib := LoadLibrary(@dllname[1]); if lib <> 0 then @SetupDlgShowModal := GetProcAddress(lib, 'SetupDlgShowModal'); if Assigned(SetupDlgShowModal) then setupsuccess:=SetupDlgShowModal(nil, PChar(URL)) else begin MessageDlg('DLL "SetupDlg.dll" konnte nicht geladen werden !',mtError,[mbOk],0); setupsuccess:=mrCancel; end; if setupsuccess=mrOK then begin // ----------------- Application.CreateForm(TMainform, Mainform); Application.Run; // --- DLL entladen --- end; if lib <> 0 then FreeLibrary(lib); // -------------------- end. Funktionieren tut es, aber das heisst ja nix :wink: lg |
Re: Zugriff auf DLL aus DPR-File
das was zwischen begin und End steht ist gleich zu setzen mit initialization. Wenn du noch irgendwas wie finalization brauchst musst du die exitproc "überschreiben"(umbiegen)
|
Re: Zugriff auf DLL aus DPR-File
Ah, das bring Licht ins Dunkel.
Wenn ich also die Routinen aus der DLL irgendwo im Hauptformular verwenden wollte/müsste, dann müsste ich besagte Methode überschreiben, weil so wie es jetzt ist, die DLL gleich wieder entladen wird ? Wie überschreibe ich die Methode ? lg |
Re: Zugriff auf DLL aus DPR-File
die dll wird erst entladen wenn du "FreeLibraray" aufrufst (falls du die dll überhaupt dynamich eingebunden hast). Bei staaticher einbindung wird die dll erst bei programmende entladen.
Wenn du Procedure aus der DLL-Exportierst ist es eigentich auch nicht notwendig das du was zwischen begin-end schreibst, du könntest ebenso da eine procedure zum initialisieren exportieren und eine um wieder aufzuräumen und diese dann vom hauptprogramm aus beim start/beenden aufrufen. |
Re: Zugriff auf DLL aus DPR-File
Zitat:
lg Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz