Перечисляемый тип
До этого момента в программах использовались стандартные типы данных: integer, Real, Char, string и Boolean. Вместе с тем, язык Delphi позволяет программисту определить свой собственный тип данных, а затем данные этого типа использовать в программе.
Объявляемый программистом новый тип данных базируется на стандартных типах или на типах, созданных программистом ранее. Тип, определенный программистом, может быть отнесен к:
- перечисляемому;
- интервальному;
- составному типу данных (записи).
Определить перечисляемый тип – это значит перечислить все значения, которые может принимать переменная, относящаяся к данному типу.
В общем виде объявление перечисляемого типа выглядит так:
Тип =(Значение1, Значение2,… Значение i)
Где:
- Тип – имя перечисляемого типа данных;
- Значение i – символьная константа, определяющая одно из значений, которое может принимать переменная типа Тип.
Примеры:
TDayOfWeek = (MON,TUE,WED,THU,FRI,SAT,SUN); TColor = (Red,Yellow,Green);
Примечание
Согласно принятому в Delphi соглашению, имена типов должны начинаться с буквы Т (от слова Type – тип).
После объявления типа можно объявить переменную, относящуюся к этому типу, например:
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 > FRI then begin { действия, если день – суббота или воскресенье } 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;