Комбинированные типы (записи)
Запись – это объединение элементов разных типов. Как и в массивах, следует различать запись-тип и запись-переменную. Один элемент записи называется полем. Запись-тип. Синтаксис записи-типа:
<имя записи> = Record
<имя поля 1> : <тип>;
...
<имя поля N> : <тип>;
<вариантная часть >
End;
Записи очень удобны для описания и хранения разнотипных данных о каких-либо однотипных структурах.
В целях экономии памяти, повышения скорости чтения и записи данных, следует назначить именно тип Byte, который занимает всего 1 байт памяти, а не тип Word, который требует 2 байта памяти. В то же время, например, для поля ElectYear (год поступления) тип Byte непригоден, т. к. имеет недостаточный диапазон значений. Записи с вариантами. Синтаксис записи допускает вариантность описания полей. Вариантная часть содержит несколько альтернатив, в каждой из которых в круглых скобках задается список полей, присущих своему варианту. При использовании вариантных полей в записях следует подчиняться следующим правилам синтаксиса:
- 1)Вариантная часть должна начинаться со строки, в начале которой располагается слово Case, а в ее конце – слово Of. Между ними располагается поле-признак.
- 2)Запись должна содержать только один вариант, который должен располагаться в конце всех описанных полей непосредствено перед словом End.
- 3)Имена полей во всех вариантах должны быть разными. Они должны также отличаться от имен полей фиксированной части.
- 4)Для некоторых возможных значений поля-признака вариант может отсутствовать. В этом случае после двоеточия, соответствующего значению варианта, следует поставить пустой список ( ) либо не указывать этот вариант вообще (включая значение, двоеточие и пустое поле).
Запись-переменная. Синтаксис записи-переменной:
<имя записи> : Record
<имя поля 1> : <тип>;
<имя поля 2> : <тип>;
...
<имя поля N> : <тип>;
<вариантная часть >
End;
т.е. синтаксисы переменной и типа отличаются одним символом (":" и "=").
Доступ к полям записей. Переменная, представляющая поле, конструируется из имени записи и поля, отделенного друг от друга десятичной точкой. Такая составная переменная называется квалификационной. Доступ к полям записей с помощью оператора With. Для упрощения обращения к полям одной и той же записи можно использовать оператор With.
Оператор присоединения WITH.
В случае использования вложенных записей при обращении к их отдельным элементам могут получаться очень длинные составные имена. Для сокращения записи составных имен используется оператор with, который имеет следующий вид:
with <имя_записи> do <оператор>;
Здесь <имя_записи> - простое или составное имя записи; <оператор> - простой или составной оператор, в котором при ссылках на элементы записи имя_записи можно опускать. При этом данный оператор не должен изменять переменную, указанную в имени записи.
Один раз указав переменную типа запись в операторе with, можно работать с именами полей как с обычными переменными, т.е. без указания перед идентификатором поля имени переменной, определяющей запись.