次のテストケースを考えてみましょう:
{ 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
私は、できればコンパイラに WARNING レベルのメッセージを出力させる、最も適切な方法でそれを回避する方法を探しています。