E2030 case 文のラベルが重複して定義されています (Delphi)
エラーと警告のメッセージ(Delphi) への移動
このエラーメッセージは,case 文の中に 1 つの値に対して複数の case ラベルがあるときに表示されます。
program Produce; function DigitCount(I: Integer): Integer; begin case Abs(I) of 0: DigitCount := 1; 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.
{ この例では,case ラベルに 0 が 2 回使用されている }
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.
{ 一般に,case ラベルの定数と範囲にシンボルを使用している場合,問題の箇所をつきとめるのはこれほど容易ではない。エラーを見つけるには定数の実値をメモして調べなければならない場合もある }