E2030 Etiquette de CASE dupliquée (Delphi)

De RAD Studio
Aller à : navigation, rechercher

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

Ce message d'erreur se produit lorsqu'il y a plus d'un libellé CASE avec une valeur spécifiée dans une instruction case.



program Produce;

function DigitCount(I: Integer): Integer;
begin
  case Abs(I) of
  0:                    DigitCount := 1;
  0        ..9:         DigitCount := 1;   (*<-- Message d'erreur ici*)
  10       ..99:        DigitCount := 2;
  100      ..999:       DigitCount := 3;
  1000     ..9999:      DigitCount := 4;
  10000    ..99999:     DigitCount := 5;
  100000   ..999999:    DigitCount := 6;
  1000000  ..9999999:   DigitCount := 7;
  10000000 ..99999999:  DigitCount := 8;
  100000000..999999999: DigitCount := 9;
  else                  DigitCount := 10;
  end;
end;

begin
  Writeln( DigitCount(12345) );
end.

Ici nous n'avons pas fait attention et mentionné deux fois le libellé CASE 0.



program Solve;

function DigitCount(I: Integer): Integer;
begin
  case Abs(I) of
  0        ..9:         DigitCount := 1;
  10       ..99:        DigitCount := 2;
  100      ..999:       DigitCount := 3;
  1000     ..9999:      DigitCount := 4;
  10000    ..99999:     DigitCount := 5;
  100000   ..999999:    DigitCount := 6;
  1000000  ..9999999:   DigitCount := 7;
  10000000 ..99999999:  DigitCount := 8;
  100000000..999999999: DigitCount := 9;
  else                  DigitCount := 10;
  end;
end;

begin
  Writeln( DigitCount(12345) );
end.

En général, le problème n'est peut-être pas si facile à cerner lorsque vous avez des constantes symboliques et des intervalles de libellés CASE - vous devrez peut-être écrire les valeurs réelles des constantes pour trouver ce qui ne va pas.