Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL soll Funktion aus Main-Application ausführen (https://www.delphipraxis.net/91956-dll-soll-funktion-aus-main-application-ausfuehren.html)

argonix 12. Mai 2007 11:46


DLL soll Funktion aus Main-Application ausführen
 
Hallo! Seit einiger Zeit beschäftige ich mich mit DLL-Programmierung. Wie die Main-Anwendung Funktionen aus der DLL ausführen kann weis ich, aber geht das auch umgekehrt? Wie kann die DLL eine Funktion der Anwendung ausführen?

CalganX 12. Mai 2007 11:49

Re: DLL soll Funktion aus Main-Application ausführen
 
Hi,
das sollte über Hier im Forum suchenInterfaces möglich sein. Zwei Artikel, die dafür nützlich sein könnten: Einführung in Interfaces und sakuras Plugins-Tutorial. Ein konkretes Beispiel zu letzterem könntest du auch hier finden.

Chris

mkinzler 12. Mai 2007 11:55

Re: DLL soll Funktion aus Main-Application ausführen
 
Man könnte es auch mit callbacks-Funktionen versuchen.

Eichhoernchen 12. Mai 2007 12:24

Re: DLL soll Funktion aus Main-Application ausführen
 
übergib doch einfach einen Pointer auf die Funktion an die DLL und diese führt die dann aus.

Delphi-Quellcode:
Dll:


Main Program:

function dosth(blub: integer): integer;
begin
..
end;

type
  TInit = procedure (func: Pointer);

function getgunction(name: pchar): Pointer;
begin
  if name = 'dosth' then
    result := @dosth;
//etc...
end;

var
  init: TInit;
begin
  //DLL laden
  //init funktion in der DLL aufrufen:
//init laden
  init(@getfunction);
end.


Dll:
type
  TFunc = function (name: pchar): Pointer;
  TDoSth = function (blub: integer): integer;

var
  getfunc: TFunc;
  dosth: TDoSth;
 
procedure init(func: Pointer);
begin
  @getfunc := func;
  @dosth := getfunc('dosth');
  dosth(..);
end;

exports
  init;

begin
end.

mkinzler 12. Mai 2007 12:26

Re: DLL soll Funktion aus Main-Application ausführen
 
Zitat:

übergib doch einfach einen Pointer auf die Funktion an die DLL und diese führt die dann aus.
Was man im Allgemeinen als callback bezeichnet :)

Luckie 12. Mai 2007 12:41

Re: DLL soll Funktion aus Main-Application ausführen
 
Deklarier die Funktion im Exports-Abschnitt der Exe. Ist zwar sehr ungewöhnlich, da aber DLL und Exe das gleiche Format haben, kann man eine Exe auch als DLL behandeln.

argonix 12. Mai 2007 21:47

Re: DLL soll Funktion aus Main-Application ausführen
 
Das mit den Interfaces ist interessant, da damit auch nicht-Delphi-Programmierer DLL-PlugIns für mein Prog erstellen können. Gibt es irgendwo eine Art Demo-Anwendung, wo man das "Live" sehen kann?

argonix 12. Mai 2007 23:34

Re: DLL soll Funktion aus Main-Application ausführen
 
Das ganze läuft jetzt doch :oops:
Vielen Dank für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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