Delphi-Help

Case

Печать
Рейтинг пользователей: / 0
ХудшийЛучший 

Case

Описание

Ключевое слово Case обеспечивает структурированный эквивалент последовательности условных операторов той же самой переменной.
Оператор case более изящен, более эффективен, и его проще обслуживать чем множество вложений if.

Версия 2. Используется для объявлений Записей. Он обеспечивает средство отображения двух или больше отличающихся наборов объявлений на тот же самый раздел записи.
Он главным образом используется при обработке различных типов набора данных для записи, где наборы данных имеют то же самое содержание. См. пример для пояснения.
Tag обеспечивает идентификацию элемента case.

1 case Ordinal expression of
Ordinal value {,Ordinal value...} : Statement;
{...}
else Statement;
end;

2 type Name = record
Declarations ...
case {Tag :} Ordinal type of
Ordinal value {,Ordinal value...} : (Declarations);
{...}
end;

Пример кода

Пример кода : Стандартное использование оператора case

var
colour : TPrimary;
number : Integer;
begin
// Показ цвета до того как его иму будет назначенно значение
ShowColour(colour);
// Теперь устанавливаем цвет и пытаемся снова
colour := Green;
ShowColour(colour);
// Вычисления также могут использоваться в операторе case
number := 17;
Case number mod 2 of
0 : ShowMessage(IntToStr(Number)+' mod 2 = 0');
1 : ShowMessage(IntToStr(Number)+' mod 2 = 1');
else ShowMessage(IntToStr(Number)+' mod 2 неизвестно');
end;
end;
// Процедура для показа переданного цвета
procedure TForm1.ShowColour(colour : TPrimary);
begin
// Использование оператора Case для того, чтобы увидеть цвет переданной переменной
// Обратите внимание насколько важно предложение else, даже при том, что мы
// охватили, очевидно, все значения TPrimary!
Case colour of
Red : ShowMessage('colour
Красный');
Green : ShowMessage('colour
Зеленый');
Blue : ShowMessage('colour
Синий');
Yellow : ShowMessage('colour
Желтый');
else ShowMessage('colour
неизвестен!');
end;
end;

colour неизвестен!
colour Зеленый
17 mod 2 = 1

Пример кода : Case в записях

type
// Объявление записи fruit используя case для выбора
// диаметра окружности fruit, или длины и ширины.
TFruit = record
name : string[20];
Case isRound : Boolean of // Выбор отображения следующего раздела
True  :
(diameter : Single);  // Отображение той же памяти как диаметр
False :
(length   : Single;   // Отображение той же памяти как длина и ширина
width    : Single);
end;
var
apple, banana, fruit : TFruit;
begin
// Установка яблока как окружность, с соответствующими измерениями
apple.name     := 'Apple';
apple.isRound  := True;
apple.diameter := 3.2;
// Установка банана как удлинённый, с соответствующими измерениями
banana.name    := 'Banana';
banana.isRound := False;
banana.length  := 7.65;
banana.width   := 1.3;
// Показ атрибутов яблока
fruit := apple;
if fruit.isRound
then ShowMessage('Диаметр '+fruit.name +' = '+
FloatToStrF(fruit.diameter, ffFixed, 2, 1)+'"')
else ShowMessage('Длина '+fruit.name +' = '+
FloatToStrF(fruit.length, ffFixed, 2, 1)+'" ширина = '+
FloatToStrF(fruit.width, ffFixed, 2, 1)+'"');
// Показ атрибутов банана
fruit := banana;
if fruit.isRound
then ShowMessage(fruit.name +' диметр = '+
FloatToStrF(fruit.diameter, ffFixed, 2, 1)+'"')
else ShowMessage(fruit.name +' длина = '+
FloatToStrF(fruit.length, ffFixed, 2, 1)+'" ширина = '+
FloatToStrF(fruit.width, ffFixed, 2, 1)+'"');
end;

Диаметр Apple = 3.2"
Длина Banana = 7.7" ширина = 1.3"

Примечание

Читайте также: каталог смартфонов

Авторизация



Счетчики