Иллюстрированный самоучитель по Turbo Pascal

Записи

Например:

with c.bd do month: = 9;

Это эквивалентно:

with с do with bd do month: = 9;

…или:

with c,bd do month: = 9;

…или:

c.bd.month: = 9;

Турбо Паскаль разрешает использовать записи с так называемыми вариантными полями, например:

type
Forma = record
Name: String;
case Byte of
0: (Birthplace: String [40]);
1: (Country: String [20];
EntryPort: String [20];
EntryDate: 1.. 31;
ExitDate: 1..31)
end;

В этом примере тип FORMA определяет запись с одним фиксированным полем NAME и вариантной частью, которая задается предложением CASE… OF. Вариантная часть состоит из нескольких вариантов (в примере – из двух вариантов: 0 и 1). Каждый вариант определяется константой выбора, за которой следует двоеточие и список полей, заключенный в круглые скобки. В любой записи может быть только одна вариантная часть, и, если она есть, она должна располагаться за всеми фиксированными полями.

Замечательной особенностью вариантной части является то обстоятельство, что все заданные в ней варианты "накладываются" друг на друга, т.е. каждому из них выделяется одна и та же область памяти. Это открывает дополнительные возможности преобразования типов, например:

var
mem4: record case Byte of
0: (by: array'[0..3] of Byte);
1: (wo: array [0..1] of Word);
2: (lo: longint);
end;

В этом примере запись МЕМ4 имеет три варианта, каждый из которых занимает в памяти один и тот же участок из 4 байт. В зависимости от того, к какому полю записи мы обращаемся в программе, этот участок может рассматриваться как массив из 4 байт (поле ВТ), массив из двух целых типа WORD (поле WO) или, наконец, как одно целое число типа LONGINT (поле LO).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.