Дело в том, что нет необходимости делать это таким образом. Даже если это работает, зачем это делать? Функциональность закрытия - как вы должны это делать? Зачем бороться с этим?

отрим следующий тест-кейс:

{ 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.

Ответы на вопрос(4)

Ваш ответ на вопрос