E2094 Lokale Prozedur/Funktion '%s' wurde Prozedurenvariable zugewiesen (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Diese Fehlermeldung wird angezeigt, wenn Sie versuchen, eine lokale Prozedur einer Prozedurvariable zuzuweisen oder sie als prozeduralen Parameter zu übergeben.

Dies ist nicht erlaubt, da die lokale Prozedur dann auch aufgerufen werden könnte, wenn die umgebende Prozedur nicht aktiv ist. Wenn die lokale Prozedur in diesem Fall versucht, auf Variablen der umgebenden Prozedur zuzugreifen, hat dies einen Programmabsturz zur Folge.


program Produce;

var
  P: Procedure;

procedure Outer;

  procedure Local;
  begin
    Writeln('Local is executing');
  end;

begin
  P := Local;       (*<-- Hier die Fehlermeldung*)
end;

begin
  Outer;
  P;
end.

Hier wird versucht, einer Prozedurvariable eine lokale Prozedur zuzuweisen. Dies ist nicht erlaubt (weil zur Laufzeit unsicher).


program Solve;

var
  P: Procedure;

procedure NonLocal;
begin
  Writeln('NonLocal is executing');
end;

procedure Outer;

begin
  P := NonLocal;
end;

begin
  Outer;
  P;
end.

Verlegen Sie die lokale Prozedur aus der umgebenden Prozedur heraus.