以下代码(仅用于演示问题)在Delphi 2010中编译并运行正常。但在Delphi 2009中,编译器会出现“E2035实际参数不足”的错误提示。
program Project50;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TMyProc = reference to procedure(param: integer);
var
a: TProc;
b: TMyProc;
begin
b := procedure (param: integer)
begin
end;
a := TProc(b); // <-- [DCC Error] Project50.dpr(19): E2035 Not enough actual parameters
end.
我只发现了一个非常丑陋的解决方法来解决这个问题(a:TProc absolute b)。是否有人知道更好的解决编译器缺陷的方法?
[TProc字段实际上隐藏在一个记录内,该记录可以存储各种“可执行”代码 - TProcedure、TMethod和TProc。强制转换用于将特定的匿名过程存储到此字段中。]