Das compiliert schon mal aus diversen Gründen nicht:
- Do is ein reserved word
- as kann dort nicht verwendet werden
Weiter gilt: TestF ist zuweisungskompatibel zu aFunc, aber nicht zu aPointer. Der Rückgabewert von TestF ist zuweisungskompatibel zu Pointer, aber nicht zu aFunc. Der Compiler entscheidet entsprechend.
Anders sieht es hier aus:
Delphi-Quellcode:
Function TestF: Pointer;
Begin
Result := nil;
end;
function TestF1: TSimpleFunc;
begin
result := TestF;
end;
...
aFunc := TestF1; // compiliert nicht
aFunc := TestF1(); // compiliert
Ich habe mir angewöhnt runde Klammern zu setzen, wenn ich sicherstellen will, dass die Function ausgeführt wird.
Delphi-Quellcode:
aFunc := TestF;
apointer := AFunc();