Afloje la restricción "Procedimiento / función local asignada a la variable de procedimiento" con gracia
Considere el siguiente caso de prueba:
{ 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;
En el compilador de la línea 13 emite un mensaje con nivel de ERROR, prohibiendo todos los casos de uso de tales procedimientos locales. La resolución "oficial" es promoverLocal
ímbolo @ para el alcance externo (es decir, hágalo hermano deGlobal
) que tendría un impacto negativo en la "estructura" del código.
Estoy buscando la manera de evitarlo de la manera más elegante, preferiblemente haciendo que el compilador emita un mensaje de nivel de ADVERTENCIA.