Einzelnen Beitrag anzeigen

Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#1

Probleme mit CallBack aus eigener DLL

  Alt 9. Mär 2009, 12:46
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.
  Mit Zitat antworten Zitat