W1018 Case label outside of range of case expression (Delphi)
Go Up to Error and Warning Messages (Delphi)
Identifier
The identifier for the $WARN directive: CASE_LABEL_RANGE
Description
You have provided a label inside a case statement that cannot be produced by the case statement control variable. -W
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.
It is not possible for a TatesCompass to hold all the values of the CompassPoints, and so several of the case labels will elicit errors.
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.
After examining your code to determine what the intention was, there are two alternatives. The first is to change the type of the case statement's control variable so that it can produce all the case labels. The second alternative would be to remove any case labels that cannot be produced by the control variable. The first alternative is shown in this example.