AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf DLL aus DPR-File

Ein Thema von slemke76 · begonnen am 10. Apr 2005 · letzter Beitrag vom 10. Apr 2005
Antwort Antwort
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#1

Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 11:42
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:
  // --- DLL laden ---
  lib := LoadLibrary(@dllname[1]);
  if lib <> 0 then
  begin
    { @SetupDlgShowNormal := GetProcAddress(lib, 'SetupDlgShowNormal'); }
    @SetupDlgShowModal := GetProcAddress(lib, 'SetupDlgShowModal');
  end;
finalization:
Delphi-Quellcode:
  // --- DLL entladen ---
  if lib <> 0 then
    FreeLibrary(lib);
  // --------------------
Grüße

Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 11:45
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#3

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 11:51
Zitat von SirThornberry:
genau, in der dll das ganze einfach zwischen begin und end machen. [...] dll-projekt
Meintest du nicht dpr ? Die DLL läd sich ja nicht selbst

lg
Sebastian
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#4

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 12:46
Hi!

So, habe das in der DPR wie folgt gemacht :

Delphi-Quellcode:
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.
Kann man das so machen ?????
Funktionieren tut es, aber das heisst ja nix

lg
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 12:51
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#6

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 13:04
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 13:07
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#8

Re: Zugriff auf DLL aus DPR-File

  Alt 10. Apr 2005, 13:12
Zitat von SirThornberry:
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.
Aha - jetzt wirds kompliziert (habe ich doch gestern erst die erste DLL geschrieben) - ich werds aber mal probieren

lg
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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