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