case文を利用した条件分岐処理 - Delphi

Delphiでcase文を使った条件分岐処理を紹介します。

書式

case 判定する変数 of
  値1: ...処理;
  値2: ...処理;
  値3: ...処理;
  ...
  else ...処理;
end;
または、
case 判定する変数 of
  値1:begin
    ...処理;
  end;
  値2:begin
    ...処理;
  end;
  値3:begin
    ...処理;
  end;
  ...
  else begin
    ...処理;
  end;
end;
「判定する変数」の値をcase文で判定し、値nと一致する場合は一致する値n:に続く処理を実行します。どの値にも当てはまらなかった場合は、elseブロック内の処理を実行します。Delphiではcase内の"値:"ブロックの中にbreak,exitといったswitch文から抜ける記述はなくても構いません。また、C,Javaのように値に一致した以降の他のブロックに制御が流れ落ちることはありません。

プログラム例

コード

procedure TForm1.Button4Click(Sender: TObject);
var
  value:integer;
begin
  value:=2;
  case value of
  0:begin
      Memo1.Text:='0です。';
    end;
  1:begin
      Memo1.Text:='1です。';
    end;
  2:begin
      Memo1.Text:='2です。';
    end;
  3:begin
      Memo1.Text:='3です。';
    end;
  else begin
      Memo1.Text:='それ以外です。';
  end;
  end;
end;

実行結果 (Memo1)

2です。

参考:エラーになる例

コード

下記のコードはコンパイルエラーになります。case文で判定できるのは順序型(int, long, charなど)の変数のみです。
procedure TForm1.Button5Click(Sender: TObject);
var
  value:string;
begin
  value:='penguin';
  case value of
  'penguin':begin
      Memo1.Text:='ペンギンです。';
    end;
  'whale':begin
      Memo1.Text:='くじらです。';
    end;
  else begin
      Memo1.Text:='それ以外です。';
  end;
  end;
end;
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2023-11-23
作成日: 2011-02-15
iPentec all rights reserverd.