Перераховуються тип

Визначити перераховується тип – це значить перелічити всі значення, які може приймати змінна, що відноситься до даного типу.

У загальному вигляді оголошення перераховується типу виглядає так:

Тип = (значення1, Значення2, … Значення i)

де:

  • тип – ім’я перераховується типу даних;
  • Значення i – символьна константа, визначальна одне зі значень, що може приймати змінна типу Тип.

Приклади:

TDayOfWeek = (MON, TUE, WED, THU, FRI, SAT, SUN);

TColor = (Red, Yellow, Green);

Примітка

Відповідно до прийнятого в Delphi угодою, імена типів повинні починатися з літери Т (від слова Туре – тип).
Після оголошення типу можна оголосити змінну, що відноситься до цього типу, наприклад:

type
TDayOfWeek = (MON, TUE, WED, THU, FRI, SAT, SUN);

var
ThisDay, LastDay: TDayOfWeek;

Крім вказівки значень, які може приймати змінна, опис типу задає, як значення співвідносяться один з одним. Вважається, що самий лівий елемент списку значень є мінімальним, а самий правий – максимальним. Для елементів типу DayOfWeek справедливо:

MON < TUE < WED < THU < FRI < SAT < SUN


Властивість впорядкованості елементів перераховується типу дозволяє використовувати змінні перераховується типу в керуючих інструкціях, наприклад, так:

if (Day = SAT) OR (Day = SUN) then
begin
{Дії, якщо день - субота або неділя}
end;

Наведену інструкцію можна записати і так:

if (Day = SAT) OR (Day = SUN) then

{Дії, якщо день - субота або неділя}
end;

Очевидно, що програма, написана з використанням оголошеного програмістом типу, більш наочна, легше читається і, отже, зменшується ймовірність появи помилки.
Під час компіляції Delphi перевіряє відповідність типу змінної типу виразу, яке присвоюється змінної. Якщо тип виразу не може бути приведений до типу змінної, то виводиться повідомлення про помилку.
Наприклад, в фрагменті програми

type
TDayOfWeek = (MON, TUE, WED, THU, FRI, SAT, SUN);
ThisDay: TDayOfWeek; begin
ThisDay: = 1;
if ThisDay = 6 then begin
{Блок інструкцій} end;

інструкція ThisDay: = i; помилкова, т. к. змінна ThisDay належить до певного програмістом перераховувати типу TDayOfWeek, а константа, значення якої їй присвоюється, належить до цілого типу (integer). В умови інструкції if теж помилка.
Можна стверджувати, що оголошення перераховується типу – це скорочена форма запису оголошення іменованих констант. Наприклад, наведене вище оголошення типу TDayOfWeek рівносильно наступного оголошення:

const
MON = 0; TUE = 1; WED = 2; THU = 3; FRI = 4; SAT = 5; SUN = 6;