Формат записи оператора имеет вид:
Case <выражение-селектор> of
<список1>: <оператор1;>
<список2>: <оператор2;>
…
<список N>: <оператор N;>
Else <оператор>
End;
<список2>: <оператор2;>
…
<список N>: <оператор N;>
Else <оператор>
Оператор case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Если слово else отсутствует, активизируется оператор, находящийся за словом end, т.е. первый оператор за границей case. Ветвь оператора else является необязательной. Если она отсутствует и значение выражения-селектора не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора If перед словом else точку с запятой можно ставить.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.
При использовании оператора выбора case должны выполняться следующие правила:
- Значения выражения «переключателя», записанного после служебного слова case, должны принадлежать дискретному типу; для целого типа они должны лежать в диапазоне integer.
- Все константы, предшествующие оператором альтернатив, должны иметь тип, совместимый с типом выражения.
- Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т.е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.