Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
Case
Ключевое слово
Механизм для действия в зависимости от различных значений Порядковых unit
  
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 обеспечивает структурированный эквивалент последовательности условных операторов той же самой переменной.

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

Версия 2. Используется для объявлений Записей. Он обеспечивает средство отображения двух или больше отличающихся наборов объявлений на тот же самый раздел записи.

Он главным образом используется при обработке различных типов набора данных для записи, где наборы данных имеют то же самое содержание. См. пример для пояснения.

Tag обеспечивает идентификацию элемента case.
Похожие команды
Else  Начинает ложный раздел if, case и try операторов

End  Ключевое слово, которое заканчивает операторные блоки

If  Начинает условное выражение, чтобы решить, что делать далее

Packed  Уплотняет сложные типы данных в минимальный объём памяти

Record  Структурный тип данных содержащий поля данных

Then  Часть оператора if, начинает истинное предложение, выполняемое в случае истинности условия

 
Пример кода : Стандартное использование оператора 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"
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия