Разместите нашу кнопку!

Новые статьи:

Programming articles

Создание сайтов на шаблонах

Множество вариантов работы с графикой на канве

Шифруем файл с помощью другого файла

Перехват API функций - Основы

Как сделать действительно хороший сайт

Создание почтового клиента в Delphi 7

Применение паскаля для решения геометрических задач

Управление windows с помощью Delphi

Создание wap сайта

Операционная система unix, термины и понятия

SQL враг или друг

Возникновение и первая редакция ОС UNIX

Оптимизация проекта в Delphi

Ресурсы, зачем нужны ресурсы

Термины программистов 20 века

Советы по созданию собственного сайта с нуля

Шифруем файл с помощью пароля

Фракталы - геометрия природы

Crypt - Delphi программа для шифрования

Рассылка, зачем она нужна и как ее организовать?

Учебник по C++ для начинающих программистов

Уроки для изучения ассемблера

Загадочный тип PCHAR

Средства по созданию сайтов

Операторы преобразования классов is и as

Borland Developer studio 2006. Всё в одном

Создание базы данных в Delphi, без сторонних БД


Software engineering articles



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 предоставляет структурный эквивалент последовательности операторов if над одной и той же переменной.

     Оператор case более элегантен, более эффективен и прост в сопровождении, чем многочисленные вложенные if.

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

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

     Тэг идентифицирует элементы case.

Пример кода:

var
   colour : TPrimary;
   number : Integer;

begin
   // Show the colour before it has an assigned value
   ShowColour(colour);

   // Now set the colour and try again
   colour := Green;
   ShowColour(colour);

   // Calculations can also be used in the case statement
   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 is unknown');
   end;
end;

// Procedure to show the colour of a passed
procedure TForm1.ShowColour(colour : TPrimary);
begin
   // Use a case statement to see the colour of the passed var
  
   // Note how important the else clause is, even though we have
   // apparently covered all TPrimary values!
   Case colour of
      Red : ShowMessage('The colour is Red');
      Green : ShowMessage('The colour is Green');
      Blue : ShowMessage('The colour is Blue');
      Yellow : ShowMessage('The colour is Yellow');
   else ShowMessage('The colour is Unknown!');
   end;
end;

Результат выполнения:

The colour is Unknown!
The colour is Green
17 mod 2 is 1

Пример кода:

type
   // Declare a fruit record using case to choose the
   // diameter of a round fruit, or length and height ohterwise.
   TFruit = record
     name : string[20];
     Case isRound : Boolean of // Choose how to map the next section
       True :
         (diameter : Single); // Maps to same storage as length
     False :
         (length : Single; // Maps to same storage as diameter
         width : Single);
   end;

var
   apple, banana, fruit : TFruit;

begin
   // Set up the apple as round, with appropriate dimensions
   apple.name := 'Apple';
   apple.isRound := True;
   apple.diameter := 3.2;

   // Set up the banana as long, with appropriate dimensions
   banana.name := 'Banana';
   banana.isRound := False;
   banana.length := 7.65;
   banana.width := 1.3;

   // Show the attributes of the apple
   fruit := apple;
   if fruit.isRound
   then ShowMessage(fruit.name +' diameter = '+
      FloatToStrF(fruit.diameter, ffFixed, 2, 1)+'"')
   else ShowMessage(fruit.name +' length = '+ 
                     FloatToStrF(fruit.length, ffFixed, 2, 1)+'" width = '+
                     FloatToStrF(fruit.width, ffFixed, 2, 1)+'"');

   // Show the attributes of the banana
   fruit := banana;
   if fruit.isRound
   then ShowMessage(fruit.name +' diameter = '+
                    FloatToStrF(fruit.diameter, ffFixed, 2, 1)+'"')
   else ShowMessage(fruit.name +' length = '+
                    FloatToStrF(fruit.length, ffFixed, 2, 1)+'" width = '+
                    FloatToStrF(fruit.width, ffFixed, 2, 1)+'"');
end;

Результат выполнения:

Apple diameter = 3.2"
Banana length = 7.7" width = 1.3"