Запись - это составной тип данных, состоящий из фиксированного числа элементов одного или нескольких типов. Описание типа записи начинается словом record и заканчивается словом end. Между ними заключен список элементов, называемых полями, с указанием идентификаторов полей и типа каждого поля:
type TPerson = record FirstName: string[20]; // имя LastName: string[20]; // фамилия BirthYear: Integer; // год рождения end; |
Идентификаторы полей должны быть уникальными только в пределах записи. Допускается вложение записей друг в друга, т.е. поле записи может быть в свою очередь тоже записью.
Чтобы получить в программе реальную запись, нужно создать переменную соответствующего типа:
var
Friend: TPerson;
|
Записи можно создавать и без предварительного описания типа, но это делается редко, так как мало отличается от описания полей в виде отдельных переменных.
Доступ к содержимому записи осуществляется посредством идентификаторов переменной и поля, разделенных точкой. Такая комбинация называется составным именем. Например, чтобы получить доступ к полям записи Friend, нужно записать:
Friend.FirstName := 'Alexander'; Friend.LastName := 'Ivanov'; Friend.BirthYear := 1991; |
Обращение к полям записи имеет несколько громоздкий вид, что особенно неудобно при использовании мнемонических идентификаторов длиной более 5 символов. Для решения этой проблемы в языке Delphi предназначен оператор with, который имеет формат:
with <запись> do <оператор>; |
Однажды указав имя записи в операторе with, можно работать с именами ее полей как с обычными переменными, т.е. без указания идентификатора записи перед идентификатором поля:
with Friend do begin FirstName := 'Alexander'; LastName := 'Ivanov'; BirthYear := 1991; end; |
Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,
Friend := BestFriend; |
После выполнения этого оператора значения полей записи Friend станут равными значениям соответствующих полей записи BestFriend.