E2094 La procédure/fonction locale '%s' est affectée à une variable procédure (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Ce message d'erreur est émis si vous essayez d'affecter une procédure locale à une variable procédure ou de la transmettre comme paramètre procédure.

Ceci est incorrect car la procédure locale pourrait alors être appelée même si la procédure incluse n'est pas active. Cette situation peut provoquer un plantage du programme si la procédure locale essaie d'accéder à une variable de la procédure incluse.


program Produce;

var
  P : Procedure;

procedure Outer;

  procedure Local;
  begin
    Writeln('Local sexécute');
  end;

begin
  P := Local;       (*<-- Message d'erreur ici*)
end;

begin
  Outer;
  P;
end.
    

L'exemple essaie d'affecter une procédure locale à une variable locale. Ceci est incorrect car l'exécution n'est pas sécurisée.


program Solve;

var
  P : Procedure;

procedure NonLocal;
begin
  Writeln('NonLocal sexécute');
end;

procedure Outer;

begin
  P := NonLocal;
end;

begin
  Outer;
  P;
end.
    

La solution consiste à déplacer la procédure locale hors de celle incluse.