Hallo,
ich hab eine DLL die in einem Thread zeitaufwändige Dinge bearbeitet. Deshalb würde ich gerne dem Programm Rückmeldung durch eine CallBack-Funktion geben.
Die CallBack-Funktion sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| TFNCallBack = function (AData1, AData2: Cardinal; AData: Pointer): Boolean; stdcall;
function MyCallBack(AData1, AData2: Cardinal; ACallBackFunc: TFNCallBack; ACallBackData: Pointer): Boolean; stdcall; begin if Assigned(ACallBackFunc) then begin try Result := ACallBackFunc(AData1, AData2, ACallBackData); except Result := False; end; end else Result := True; end;
function MyCallBack(AData1, AData2: Cardinal; AData: Pointer): Boolean; stdcall; begin Result := True; end; |
Ich vermute, dass der Zeiger auf die Funktion, die ich der DLL übergebe, in dieser ungültig ist, weil sie andere Speicherbereiche benutzt. Andererseits kennt er ja den Zeiger...
Könnt ihr mir sagen, was falsch ist und wie ich das verbessern kann?
Vielen Dank und viele Grüßem
Hape
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.