Существует несколько возможностей создания (описания) типов пользователя. Описание типов пользователя выполняется в разделе, начинающегося с ключевого слова type.
1. Полное соответствие стандартному типу. В этом случае переменные нового типа обладают такими же свойствами, что и переменные базового типа.
type
<идентификатор — имя типа> = <идентификатор
стандартного базового типа>;
Примеры:
type
Mylnteger = Integer;
MyReal = Real;
MyString = String[255];
2. Поддиапазон стандартного типа. Такие типы называются ограниченными. Базовым типом в этом случае может быть любой перечислимый тип. Ограниченный тип сохраняет все свойства базового и отличается лишь тем, что имеет ограниченный диапазон значений.
Использование ограниченных типов, определенных пользователем, значительно улучшает наглядность и читаемость программ. Кроме того, специальная опция компилятора позволяет включить контроль выхода переменных за пределы объявленного диапазона, а это удобно при отладке программы. Включение контроля: {$R+}, а выключение его: {$R—}.
type
< идентификатор - имя типа > = < начальное значение
бaзового типа >.. < конечное значение базового типа >;
Примеры:
1)
type
MyInteger = -327.. 327;
СharS = 'A ' .. 'Z ' ;
2)
program p3_2 ;
type
MyType = 0 . . 9;
var
varl, var2 : MyType;
begin
{$R-}
varl: =55; { выход за диапазон, но ошибки не возникает }
{$R+}
var2:= 55; { выход за диапазон, ошибка возникнет }
end.
3. Новый перечислимый тип. При его определении в соответствующем порядке задаются все необходимые значения, которые может принимать переменная данного типа. Значения переменных нового типа будут представлены при помощи идентификаторов, которые, таким образом, будут являться константами нового типа.
Примеры:
type
Operator = ( plus, minus, multi, divide );
Day = ( Mon, Tues, Wed, Thur, Fri, Sat, Sun);
Из примеров видно, что переменные типа Operator могут принимать одно из четырех значений plus, minus, multi, divide; переменные типа Day могут одно из 7 значений.
Операции отношения =, <>, >, <, >=, <= можно применять ко всем переменным перечислимых типов, в том числе к описанным пользователем. Для определения результата операций сравнения мы записываем значения в нужном порядке. Для типа Operator в приведенном выше примере справедливы соотношения: plus < minus < multi < divide.