Case в Delphi


Оператор Case (Условия, условные операторы в Delphi)

Если оператор If и конструкция If then else, — предназначены для выбора одного из двух действий, то оператор Case и конструкция Case of else — предназначены для выбора одного из любого количества вариантов.

Перевести конструкцию Case… of… else… на русский язык, можно примерно так:

Вариант… Из… Иначе… 

Понять что это все означает, нам поможет следующий пример.

Работать будем с компонентом RadioGroup, с вкладки Standart и нам нужно, так его настроить, чтобы при выборе одной из скажем шести позиций c 1 по 5, переменная с принимала значения от 10 до 14, а при выборе шестой, срабатывало else и переменной присваивалось значение, скажем — 5.

Для этого:

1) Кидаем на форму компоненты Label и RadioGroup;

2) Выбираем свойство Items у компонента RadioGroup, где прописываем позиции, от одного до шести, а свойство  ItemIndex устанавливаем в 0, так-как нумерация строк в компоненте начинается с нуля;

3) Создаем обработчик событий RadioGroup1Click на RadioGroup где записываем следующее:

Запускаем проект и наблюдаем, что если мы выбираем окошки с 1 по 5, для с присваивается значения от 10 до 14 соответственно, а если окошко 6 тогда 5.

Прокомментировать происходящее можно примерно так, допустим мы установили галочку в четвертом по счету окошке:

  • Вначале анализируется выражение стоящее за оператором Вариант (Case), это Radiogroup1.ItemIndex;  
  • Затем просматривается ряд констант  Из (of)  этого оператора  это:  

0: c:=10;

1: c:=11;

2: c:=12;

3: c:=13;

4: c:=14;

  • Если константа равная значению (какое именно из всех шести позиций —  OnClick  ) найдена, выполняется оператор стоящий за константой, в нашем случае c:=13; 
  • Если константа равная значению (какое именно из всех шести позиций —  OnClick  ) не найдена,  обработка передается оператору else — c:=5; В этом можно легко убедиться выделив шестое по счету окошко.  
  • И только затем обработчик выполняет действие  Label1.Caption:=IntToStr(c); отображая содержимое переменной — с. 

Кстати, так же как и в   If then else, применение слова else здесь — не является обязательным. При его отсутствии, когда ключу выбора нет соответствия, Case — просто прекращает работу.

Еще один момент относительно синтаксиса. Если для нескольких вариантов нужно выполнять один и тот же оператор, то эти варианты можно перечислить через запятую. Давайте для закрепления материала, рассмотрим еще один небольшой пример, где все это и разберем.

Напишем программу, которая по нажатию клавиши Button будет определять четное или не четное число введено в Edit (ввод чисел от 1-10), выдавая при этом соответствующее сообщение. Для этого:

1) Кидаем на нашу форму два компонента  Edit и Button;

2) В событии OnClick Button пишем наш код:

Запускаем программу, вводим в наш Edit любое число от одного до десяти и нажимаем кнопку.