考虑以下测试用例:
{ CompilerVersion = 21 }
procedure Global();
  procedure Local();
  begin
  end;
type
  TProcedure = procedure ();
var
  Proc: TProcedure;
begin
  Proc := Local;  { E2094 Local procedure/function 'Local' assigned to procedure variable }
end;
在第 13 行,编译器发出 ERROR 级别的消息,禁止所有此类本地过程使用的情况。“官方”解决方案是将Local符号提升到外部范围(即:使其成为 的兄弟Global),这将对代码“结构化”产生负面影响。
我正在寻找以最优雅的方式规避它的方法,最好是让编译器发出警告级别的消息。