Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_1.doc
Скачиваний:
43
Добавлен:
28.03.2015
Размер:
710.14 Кб
Скачать
        1. Определение новых типов данных

Кроме стандартных типов данных язык Delphi поддерживает типы, определенные программистом. Новый тип данных определяется с помощью зарезервированного слова type, за которым следует идентификатор типа, знак равенства и описание:

type newTypeName = type;

newTypeName – это корректный идентификатор, type – это раннее определенный тип. Описание завершается точкой с запятой.

Type

TUnicode = WideChar; // TUnicode тождественен типу WideChar

TFloat = Double; // TFloat тождественен типу Double

При таком описании в программе создается новый тип данных, тождественный уже существующему типу данных, компилятор не делает никаких различий между ними (ни на этапе компиляции, ни на этапе исполнения программы). По сути, создается не новый тип данных, а псевдоним (« другое имя») для уже существующего типа данных.

Для того чтобы создать действительно новый тип данных, обладающий свойствами уже существующего типа данных, но не тождественный ему, необходимо использовать зарезервированное слово type:

type newTypeName = type type;

Type

TValue = type Real;

Различие между таким способом создания типа и обычным (без слова type) проявится при изучении массивов, записей и классов, при передаче var – параметров в подпрограммы.

Нетрудно заметить, что идентификаторы новых типов в примере начинаются заглавной буквой T (первая буква слова type). Такое соглашение о типах программиста принято разработчиками среды Delphi. Не являясь строгим, оно способствует более легкому восприятию исходного текста программы.

Синтаксическая конструкция type позволяет создавать новые порядковые типы: перечисляемые типы и интервальные типы.

        1. Перечисляемые типы данных

Перечисляемый тип данных представляет собой список значений, которые может принимать переменная этого типа. Каждому значению поставлен в соответствие идентификатор, используемый в программе для указания этого значения.

Type

TDirection = (North, South, East, West);

На базе типа TDirection можно объявить переменную Direction и присвоить ей значение:

Var

Direction: TDirection;

begin

Direction := North;

end.

На самом деле за идентификаторами значений перечисляемого типа стоят целочисленные константы. По умолчанию, первая константа равна 0, вторая — 1 и т.д. Существует возможность явно назначить значения идентификаторам:

Type

TSizeUnit = (Byte = 1, Kilobyte = 1024 * Byte, Megabyte = Kilobyte * 1024,

Gigabyte = Megabyte * 1024);

        1. Интервальные типы данных

Интервальный тип данных задается двумя константами, ограничивающими диапазон значений для переменных данного типа. Обе константы должны принадлежать одному из стандартных порядковых типов (не вещественному и не строковому). Значение первой константы должно быть обязательно меньше значения второй. Например, определим интервальный тип TDigit:

Type

TDigit = 0..9;

var

Digit: TDigit;

begin

Digit := 5;

Digit := 10; // Ошибка! Выход за границы диапазона

end.

Данные перечисляемых и интервальных типов занимают в памяти 1, 2 или 4 байта в зависимости от диапазона значений типа. Например, если диапазон значений не превышает 256, то элемент данных занимает один байт памяти.