AGB  ·  Datenschutz  ·  Impressum  







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

aus dll code in hauptanwendung ausführen

Ein Thema von lbccaleb · begonnen am 17. Jan 2008 · letzter Beitrag vom 14. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#1

aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 15:48
moin,

hilfe ich steh gerade auf dem schlauch...
wie kann ich denn, wenn ich aus einer bibliothek (dll) auf einen button drücke, eine aktion in meinem hauptformular ausführen??

was gibt es da für möglichkeiten??
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#2

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 15:50
Du must der DLL eine Callback Methode bzw. Eine Callback Funktion übergeben!!!
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 15:54
wie genau mach ich das ?? hab sowas noch nie gemacht und wenn ich ehrlich bin von nix nen plan!!

gibts vllt irgend wo nen code wo man sich sowas ansehen kann wie das funzt oder nen tutorial??
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 16:05
http://www.delphi-treff.de/tutorials...s/katalog/182/
Blackheart
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#5

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 16:06
Du brauchst in der DLL eine Funktion die eine procedurale variable als Parameter entgegennimmt und speichert.
Delphi-Quellcode:
type
TCallback = Procedure (aValue:String); // das ist ein Prozeduraler typ
Delphi-Quellcode:
// im DLL

var OnClickProc:TCallback; // hier wird die Procedur im DLL Gespeichert

Procedure SetCallback(aProc:TCallback);// Das hier musst du aus der DLL Exportieren damit andere es aufrufen können
Begin
  OnClickProc := Aproc;
end;

Procedure Form1.Onclick(Sender:Tobject);
Begin
  if assigned(onclickProc) then
    OnclickProc('hau rein');
end;
SO IN ETWA.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 16:24
danke für das tutorial @blackheart, aber leider konnte ich dort nichts drin ausfindig machen, was mir in sachen callback weiter hilft, bzw wo ich stoff finde, der mir diese funktion mal ein wenig nahe legt..

und der code sieht ja schon ganz gut aus, nur leider weiß ich noch nciht so richtig wie ich das alles verwenden muss, könntest das vllt noch mal ein wenig "mehr" kommentiren?? danke..
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#7

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 16:55
ein funktionspointer ist nicht unbedingt noetig.

deine dll:
Delphi-Quellcode:
library miep;

function add(i: LongInt): LongInt; stdcall;
begin
  add := i * 2;
end;

exports
  add index 1 name 'add';

begin
end.
im hauptprogramm fuegst du einfach folgende zeile in deinen implementation teil hinzu:
function add(i: LongInt): LongInt; stdcall; external 'miep.dll'; die add funktion ist von da an dann nutzbar.


//edit
in obigem code wird ein String als argument verwendet. das sollte man unbedingt vermeiden.
1. funktioniert da nicht ohne weiteres (siehe sharemem)
2. kennt keine andere sprache den pascal string. ergo ist sie nur mit pascal verwendbar
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#8

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 17:12
Ja das mit dem string geht nur wenn du sharemem als erstes in die uses schreibst...
sonst nimmst halt einen Pchar.

Wenn du die DLL universell einsetzbar machen willst so das die unterschiedliche anwendungen auf ereignisse unterschiedlcih reagiren brauchst du schon eine CallBack Procedur in der du die "Reaktion" unterbringst.

Wie man DLL Funtionen in der Anwendung nutzbar macht steht ja hier über dem Post. Der umgekehrte weg geht nur über callback.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 17:13
ähhm ja aber in dem fall muss die bibliothek vorhanden sein wenn ich ohne fehlermeldung das programm starten und ausführen will?? richtig??

ok da gibts dann bei mir aber nen kleines problem, es muss gleichzeitig so programmiert sein, das ich die dll nicht benötige um das programm zu starten!


diese dll ist bei mit nämlich eine "plugin" dll die hilfe formen enthält, und man soll/kann bei der installation diese dll abwählen...

das ist also noch nen kleiner hacken..
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#10

Re: aus dll code in hauptanwendung ausführen

  Alt 17. Jan 2008, 17:19
-Du must erst das DLL mit LoadLib importieren.
-Dann alle Exports des DLL in Procedurale Variablen laden mit GetProcAddr

Jetzt kannst du alle DLL Funtkionen in deinem projekt benutzen.
Vergiss nicht FreeLib wenn du sie nicht mehr brauchst.

Wenn du nun willst das dein Programm was macht wenn ein ButtonClick in der DLL passiert
dann must du der DLL eine Callback procedur übergeben.

Mal ne Frage warum nimmst du eine DLL und kein Package?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:28 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