Bei mir funktioniert beides.
Aber eigentlich sollte, wenn ich es mir genau überlege, nach Elvis Methode nur zweitere funktionieren, da kein Zeiger mehr erwartet wird.
Eventuell sollte man es so machen:
Delphi-Quellcode:
function CallBack(i: Integer): Boolean; stdcall;
begin
result := True;
ShowMessage(IntToStr(i));
if i = 5 then
result := False;
end;
type
TCallbackProc = function(i: Integer): Boolean; stdcall;
PCallbackProc = ^TCallbackProc;
procedure DoSomething(cbp: PCallbackProc); stdcall;
var
i: Integer;
CallbackProc: TCallbackProc;
begin
if Assigned(cbp) then
begin
@CallbackProc := cbp;
for i := 0 to 9 do
if not CallBackProc(i) then
break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoSomething(@Callback);
end;