Ich habe eine Funktion, die eine Funktion TFunc<Integer>
zurückgibt, die reference to function:Integer
ist. und ich habe eine Prozedur, die eine Funktion TFunc<Integer>
als Argument, ruft es und druckt das Ergebnis."Referenz auf Funktion" als Ergebnis einer Funktion
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
function GetFunction:TFunc<Integer>;
begin
result := function:Integer begin result := 42 end;
end;
procedure FunctionCall(AFunc:TFunc<Integer>);
var i:Integer;
begin
i := AFunc;
WriteLn(Format('Function Result = %d',[i]));
end;
begin
// FunctionCall(GetFunction); // error
FunctionCall(GetFunction()); // works as excpected
end.
dieser Aufruf (FunctionCall(GetFunction);
) führt zu einem Fehler. und der Anruf mit ()
funktioniert wie erwartet.
meine Frage ist:
wenn in delphi lese ich brakets benötigen und eine Funktion aufzurufen, wenn nicht (ich dachte, ich brauche sie nie)
oder
sollte ich sie nicht brauchen, und es ist ein Fehler?
Ich arbeite mit Delphi Xe5 auf Windows 7 dcc32.
Ich kann bestätigen, dass es auch in XE4 nicht kompiliert. –