W1018 Libellé CASE hors des limites de l'expression CASE (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Vous avez fourni un libellé à l'intérieur d'une instruction case qui ne peut pas être produit par la variable de contrôle de l'instruction case. -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('Nord');
   e:    Writeln('Est');
   s:    Writeln('Ouest');
   w:    Writeln('Sud');
   ne:   Writeln('Nord-Est');
   se:   Writeln('Sud-Est');
   sw:   Writeln('Sud-Ouest');
   nw:   Writeln('Nord-Ouest');
   end;
end.

TatesCompass ne peut pas contenir toutes les valeurs de CompassPoints, ainsi plusieurs des libellés case provoqueront une erreur.


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('Nord');
   e:    Writeln('Est');
   s:    Writeln('Ouest');
   w:    Writeln('Sud');
   ne:   Writeln('Nord-Est');
   se:   Writeln('Sud-Est');
   sw:   Writeln('Sud-Ouest');
   nw:   Writeln('Nord-Ouest');
   end;
end.

Après avoir examiné votre code pour déterminer quelle était l'intention, il existe deux alternatives. La première est de changer le type de la variable de contrôle de l'instruction case afin qu'elle puisse produire tous les libellés case. La deuxième alternative est d'enlever tous les libellés case qui ne peuvent pas être produits par la variable de contrôle. La première alternative se trouve dans cet exemple.