Instrukcja wyboru case stanowi czytelną alternatywę w stosunku do złożonych, wielokrotnie zagnieżdżonych instrukcji if...then...else.
Składnia instrukcji case:
case wWyb of listaWyboru1: instr1; ... listaWyboruN: instrN; end
gdzie: wWyb jest wyrażeniem typu porządkowego (dlatego typ string nie jest dozwolony); każda z list wyboru (listaWyboru1, ..., listaWyboruN) może mieć jedną z poniższych form:
Każda wartość reprezentowana przez listę wyboru musi być unikalna; podzakresy i listy nie mogą się nakładać.
Instrukcja case może być zakończona klauzulą else:
case wWyb of listaWyboru1: instr1; ... listaWyboruN: instrN; else instr; end
Jeśli lista wyboru zawiera wartość równą wartości wyrażenia wWyb, wykonywana jest instrukcja umieszczona przy tej liście wyboru. Jeśli żadna z list wyboru nie zawiera wartości takiej jak wWyb, wykonywana jest instrukcja umieszczona w klauzuli else.
Następująca instrukcja wyboru:
case I of 1..5: Caption := 'Low'; 6..9: Caption := 'High'; 0, 10..99: Caption := 'Out of range'; else Caption := ''; end;
jest równoważna zgnieżdżonej instrukcji warunkowej:
if I in [1..5] then Caption := 'Low' else if I in [6..10] then Caption := 'High' else if (I = 0) or (I in [10..99]) then Caption := 'Out of range' else Caption := '';
Inne przykłady instrukcji wyboru:
case MyColor of Red: X := 1; Green: X := 2; Blue: X := 3; Yellow, Orange, Black: X := 0; end;
case Selection of Done: Form1.Close; Compute: CalculateTotal(UnitCost, Quantity); else Beep; end;