Ich dachte ich hätte dies schon mal, aber bei genaueren betrachten habe ich gesehen, das es dazumal eine procedure war. Und im jetztigen Programm eine function.
Daher habe ich diesen Test geschrieben und muss festellen, das es mit procedure geht, aber mit function hat der Compiler Mühe.
Es kommt folgender Fehler:
Code: Alles auswählen
project1.lpr(24,19) Error: Incompatible type for arg no. 1: Got "Pointer", expected "<procedure variable type of function(LongInt):LongInt;CDecl>"
Oder geht dies mit FPC einfach nicht ?
Code: Alles auswählen
program project1;
type
TProc = procedure(i: integer); cdecl;
TFunc = function(i: integer): integer; cdecl;
procedure InitProc(fn: TProc);
begin
// Ist in einer C-Lib
end;
procedure InitFunc(fn: TFunc);
begin
// Ist in einer C-Lib
end;
procedure proc(i: integer); cdecl;
begin
InitProc(@proc);
end;
function func(i: integer): integer; cdecl;
begin
InitFunc(@func); // geht nicht, Fehlermeldung
end;
begin
InitProc(@proc);
InitFunc(@func);
end.