W1018 Case-Label außerhalb des Bereichs des Case-Ausdrucks (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi) - Index

Sie haben innerhalb einer case-Anweisung ein Label angegeben, das von der Steuervariable der case-Anweisung nicht erzeugt werden kann.


program Produce;
(*$WARNINGS ON*)

  type
    CompassPoints = (n, e, s, w, ne, se, sw, nw);
    FourPoints = n..w;

  var
    TatesCompass : FourPoints;

begin

   TatesCompass := e;
   case TatesCompass OF
   n:    Writeln('North');
   e:    Writeln('East');
   s:    Writeln('West');
   w:    Writeln('South');
   ne:   Writeln('Northeast');
   se:   Writeln('Southeast');
   sw:   Writeln('Southwest');
   nw:   Writeln('Northwest');
   end;
end.

Ein TatesCompass kann nicht alle Werte der CompassPoints aufnehmen, und daher werden mehrere der Case-Labels Fehler auslösen.


program Solve;
(*$WARNINGS ON*)

  type
    CompassPoints = (n, e, s, w, ne, se, sw, nw);
    FourPoints = n..w;

  var
    TatesCompass : CompassPoints;

begin

   TatesCompass := e;
   case TatesCompass OF
   n:    Writeln('North');
   e:    Writeln('East');
   s:    Writeln('West');
   w:    Writeln('South');
   ne:   Writeln('Northeast');
   se:   Writeln('Southeast');
   sw:   Writeln('Southwest');
   nw:   Writeln('Northwest');
   end;
end.

Zur Behebung des Problems gibt es zwei Möglichkeiten: Zum einen kann die Steuervariable der Case-Anweisung geändert werden, damit sie alle Case-Labels erzeugen kann. Die zweite Möglichkeit wäre, alle Case-Labels zu entfernen, die die Steuervariable nicht erzeugen kann. In diesem Beispiel wird die erste Möglichkeit gezeigt.