Hi,
habe die Beiträge im Forum, zu diesen Thema gefunden, allerdings kann ich diese nicht für mich nutzbar machen.
Ich habe eine Komponente die ein Callback aus einer
Dll benötigt:
Code der Componente
Delphi-Quellcode:
Type
TSetFileNamesCallBack=procedure(MsgCallback: Pointer); stdcall;
...
type
MyCompo=class(TComponent)
private
SetFileNamesCallBack:TSetFileNamesCallBack;
function DllSagtWas;
...
constructor MyCompo.Create(AOwner: TComponent);
begin
FHandle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'meinedll'));
...
@SetFileNamesCallBack:= GetProcAddress(FHandle, 'SetFileNamesCallBack');
...
// Versuch 1
SetFileNamesCallBack(@DllSagtWas);
//geht nicht, da Variable fehlt??? Self?? (auch wenn ich die function DllSagtWas:boolean; stdcall;) so definiere.
// Versuch 2
SetFileNamesCallBack(TMyCompo.DllSagtWas);
// hier bekomme ich ein Callback, aber der läuft nicht richtig. Irgendwie ist bei meiner Komponente dann vieles Nil
// wenn ich z.b. aus MyCompo.DllSagtWas ein Event starten will
end;
function MyCompo.DllSagtWas:boolean;
begin
// gib laut
end;
dll
Delphi-Quellcode:
var
gFileNamesCallBack: function:boolean = nil ;
...
procedure SetFileNamesCallBack(MsgCallback: Pointer); stdcall;
begin
@gFileNamesCallBack:=MsgCallback;
end;
... irgendwo im code
if assigned(gFileNamesCallBack) then
begin
// gib Laut
gFileNamesCallBack;
end;
exports
SetFileNamesCallBack;
Ich hab vieles probiert, aber irgendwas muss ja falsch laufen... bin für jeden Hinweis dankbar...
Mfg Net7
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene
DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.