AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi DLL soll Funktion aus Main-Application ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

DLL soll Funktion aus Main-Application ausführen

Ein Thema von argonix · begonnen am 12. Mai 2007 · letzter Beitrag vom 12. Mai 2007
Antwort Antwort
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#1

DLL soll Funktion aus Main-Application ausführen

  Alt 12. Mai 2007, 11:46
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?
Matthias
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 12. Mai 2007, 11:49
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 12. Mai 2007, 11:55
Man könnte es auch mit callbacks-Funktionen versuchen.
Markus Kinzler
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 12. Mai 2007, 12:24
ü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 = 'dosththen
    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.
Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 12. Mai 2007, 12:26
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

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

  Alt 12. Mai 2007, 12:41
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#7

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

  Alt 12. Mai 2007, 21:47
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?
Matthias
  Mit Zitat antworten Zitat
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#8

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

  Alt 12. Mai 2007, 23:34
Das ganze läuft jetzt doch
Vielen Dank für die Hilfe!
Matthias
  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 16:59 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