Записи
7.2.2. Записи
Запись - это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова:
<имя типа> = record <сп.полей> end;
Здесь <имя типа> - правильный идентификатор; record/ end - зарезервированные слова {запись, конец); <сп.полей> - список полей; представляет собой последовательность разделов записи, между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:
type
BirthDay = record Day, Month: Byte;
Year : Word end;
var
a,b : Birthday;
В этом примере тип BirthDay (день рождения) есть запись с полями Day, Month и Year (день, месяц и год); переменные а и в содержат записи типа BirthDay.
Как и в массиве, значения переменных типа записи можно присваивать другим переменным того же типа, например
а := b;
К каждому из компонентов записи можно получить доступ, если использовать составное имя, т. е. указать имя переменной, затем точку и имя поля:
a.day := 27;
b.year := 1939;
Для вложенных полей приходится продолжать уточнения:
type
BirthDay = record Day,Month: Byte;
Year : Word end;
var
с : record
Name : String;
Bd : BirthDay end;
begin
if c.Bd.Year = 1989 then ... end.
Чтобы упростить доступ к полям записи, используется оператор присоединения with:
with <переменная> do <оператор>;
Здесь with, do - зарезервированные слова (с, делать);
<переменная> - имя переменной типа запись, за которой, возможно,
следует список вложенных полей; <оператор> - любой оператор Object Pascal.
Например:
с.Bd.Month := 9;
Это эквивалентно
with c.Bd do Month := 9;
или with с do with Bd do Month := 9;
или with с, Bd do Month := 9;
Object Pascal разрешает использовать записи с так называемыми вариантными полями, например:
type
For.gif" >