AGB  ·  Datenschutz  ·  Impressum  







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

Logging aus DLL heraus über CallBack ?

Ein Thema von moelski · begonnen am 3. Jan 2009 · letzter Beitrag vom 3. Jan 2009
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 00:10
Moin !

Wir ham da ein paar DLLs woraus wir gerne Logginginfos an die Hauptanwendung übergeben würden.
Im prinzip ist das Logging nix anderes als ein paar Strings.

Ist es nun möglich (evtl. über eine CallBack Funktion) aus der DLL heraus einen String an die Anwendung zu übergeben? Und in der Anwendung übergebe ich dann den String an unser Logging (SmartInspekt) ?
Im Prinzip könnte man die SmartInspekt Unit auch in der DLL verwenden, aber dadurch wächst die DLl von 100 auf 443KB. Das ist ein bisserl arg zuviel um ein paar Strings zu loggen wie ich finde ...

Wenn das über Callback geht, wäre das dann der umgekehrte Weg zu dem was hier dargstellt wurde?
http://www.delphipraxis.net/internal...t=dll+callback
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 00:12
Was Strings und DLLs angeht, guckt dir das http://www.michael-puff.de/Artikel/StringDLL.shtml mal an.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:01
Moin Michael,

danke für den Hinweis. Wir haben uns aber extra entschlossen die ShareMem zu nutzen. Denn wie hast du so schön geschrieben:
Zitat:
...Will man es sich unter Delphi einfach machen und ist die DLL auch in Delphi geschrieben...
Wir werden das Interface für die DLLs nicht bekannt geben und insofern möchten wir aus unseren DLLs heraus auch ganz normal mit Strings arbeiten können. Ob das nun besser oder schlechter ist sei mal dahingestellt.

Kannst du (oder jemand anderes) mir denn noch einen Tip geben bezüglich der Callback Funktion?

Ich habe hier noch eine Info gefunden: http://www.delphi-forum.de/viewtopic.php?p=386566
Aber das scheint nicht alles zu sein was man für die Umsetzung braucht.

Um der Sache auf den Grund zu gehen habe ich mal alles auf das Nötigste reduziert.
In meiner DLL habe ich folgende Definition:
PFNCallBack = Procedure (); stdcall; Und folgenden Code:
Delphi-Quellcode:
Procedure MyCallBack(ACallBackFunc: PFNCallBack); stdcall;
begin
  if Assigned(ACallBackFunc) then begin //schauen ob Funktion verfügbar ist....ja ist sie
    try
      ACallBackFunc();
    except
      //
    end;
  end;
end;
Und in meinem normalen Programm habe ich das hier:
Delphi-Quellcode:
procedure MyCallBack(); stdcall;
begin
  ShowMessage('Geht' );
end;
Das ist ja letztlich die Procedure die ich aus meiner DLL raus aufrufen möchte.

Aber so einiges ist mir da noch nicht klar.
  • Wie muss ich die Procedure im Hauptprogramm bekannt machen?
  • Muss ich die Procedure im Hauptprogramm auch irgendwie "exportieren"?
  • Wie rufe ich in der DLL letztlich meine Callback Procedure auf? Vermutlich mit MyCallBack(????). Aber was übergebe ich da?

Hoffe jemand kann da noch etwas lichten
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:10
Zitat:
# Wie muss ich die Procedure im Hauptprogramm bekannt machen?
Sie ist doch im Hauptprogramm deklariert
Zitat:
# Muss ich die Procedure im Hauptprogramm auch irgendwie "exportieren"?
Nein, du übergibst sie ja an die Funktion in der Dll
Zitat:
# Wie rufe ich in der DLL letztlich meine Callback Procedure auf? Vermutlich mit MyCallBack(????). Aber was übergebe ich da?
Ja
Markus Kinzler
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:17
Moin !

Zitat:
Zitat:
# Wie muss ich die Procedure im Hauptprogramm bekannt machen?
Sie ist doch im Hauptprogramm deklariert
Nein im Moment ist es nur eine Procedure in meiner Hauptanwendung.

Aber vermutlich habe ich da noch ein Verständnisproblem ...
Funktioniert das ganze Konstrukt so:
-> Hauptprogramm übergibt der DLL einen Pointer auf die eigene Procedure (um sie in der DLL bekannt zu machen)
-> Und dann greife ich über diesen Pointer aus meiner DLL raus auf die Procedure zu?

Sehe ich das richtig das dann dieses Beispiel genau auf meinen Fall zutreffen würde?
http://www.delphi3000.com/articles/article_2362.asp?SK=
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:25
Zitat:
-> Hauptprogramm übergibt der DLL einen Pointer auf die eigene Procedure (um sie in der DLL bekannt zu machen)
-> Und dann greife ich über diesen Pointer aus meiner DLL raus auf die Procedure zu?
Genauso funktioniert es
Markus Kinzler
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:39
Moin !

Ahaaaa
Prinzip verstanden, umgesetzt und funktioniert.

Danke an alle !
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 10:48
Wenn du die DLL sowieso nur aus Delphi heraus verwenden willst ist ein "stdcall" überflüssig.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Logging aus DLL heraus über CallBack ?

  Alt 3. Jan 2009, 11:02
Moin !

Zitat:
Wenn du die DLL sowieso nur aus Delphi heraus verwenden willst ist ein "stdcall" überflüssig.
Das ist jetzt überflüssig da ich die DLL dynamisch lade. Der Teil ist schon Geschichte ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  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 12:56 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