| 6.4.      ЗаписьТип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой. Количество полей записи может быть любым. Пример. 
    | type |  |  
    | Complex = record | {Тип комплексных чисел} |  
    | Re:   Real; |  |  
    | Im: Real |  |  
    | end; |  |  
    | Data = record | {Тип - дата рждения} |  
    | Year: Integer; |  |  
    | Month: 1..12; |  |  
    | Day:   1..31 |  |  
    | end; |  |  
    | Person = record | {Тип - сведения о сотруднике} |  
    | Name:   string[20] ; |  |  
    | Sex:   (Male,   Female); |  |  
    | Age:   Integer; |  |  
    | Married: Boolean |  |  
    | end; |  |  Примечание. Если несколько полей типа-записи имеют один и тот же тип, то их имена можно перечислить через запятую и затем указать этот общий тип. Так, рассмотренный в примере тип комплексных чисел можно ввести и другим образом: typeComplex = record
 Re, Im: Real
 end;
 После введения типа-записи можно затем задать переменные или типизированные константы этого типа - записи. При задании значений константе ее поля записываются в круглых скобках через точку с запятой. Для задания значения каждого поля сначала указывается имя поля, а затем через двоеточие - его значение. Так,   для   введенных   выше   типов   можно   задать,   например,   следующие переменные и константы:  varX, Y, Z: Complex;
 Dat: Data;
 сonst
 Birthday: Data = (Year:  1971;  Month:  12; Day:  9 );
 Ivanov: Person = (Name:  'Иванов'; Sex: Male; Age: 40; Married: True);
 Примечание.        Тип-запись можно вводить и непосредственно при определении переменных или типизированных констант. Например, фрагмент varX,   Y,   Z:   record
 Re,   Im:   Real
 end;
 определяет те же комплексные переменные, что и в предыдущем примере. Доступ к полям записи осуществляется указанием имени переменной (константы) и имени поля, записываемого через точку, например: Ivanov..ge,X.Re,
 Dat.Day и т. д.
 Пример. Использование полей записей. X.Re	=  15;X.Im	= 17;
 Y.Re	= -X.Re;
 Y.Im	= -X.Im;
 Ivanov.Married := False;
 Для того чтобы не выписывать каждый раз имя записи при обращении к ее нолям, можно использовать оператор над записями WITH. Его структура выгляни следующим образом: with <имя записи> do <оператор>; В этом случае внутри оператора можно указывать только поле записи. Например, фрагмент: with X do begin
 Re := 1.5;
 Im := 1.7;
 Y.Re  := -Re;
 Y.Im  := -Im
 end;
 with Ivanov do
 Married   := False;
 эквивалентен фрагменту из предыдущего примера. Тип-запись может иметь вариантную часть, изменяющуюся при разных реализациях, например, в типе-записи параметров геометрических фигур для квадрата задается сторона, для треугольника - две стороны и угол между ними, для окружности - радиус и т.д. Вариативная часть может быть только одна и должна располагаться в конце записи. Пример. Использование вариантной части. 
    | Type |  |  
    | Figure = (Square,   Triangle,   Circle); |  |  
    | Param = record |  |  
    | X ,Y:   Real; | {точка привязки} |  
    | case Fig:   Figure  of | {параметры фигур} |  
    | Square:   (Side: Real); |  |  
    | Triangle: (Side1, Side2, Angle:   Real); |  |  
    | Circle: (Radius: Real) |  |  
    | end; |  |  
    | var   MySquare ,   MyCircle: Param; |  |  Вариантная часть начинается словом case, за которым следует переменная выбора варианта (в примере Fig) с указанием типа. Далее указываются константы, значения которых может принимать переменная выбора варианта (в примере - Sguare, Triangle, Circle). За каждой константой через двоеточие в круглых скобках записываются поля данного варианта записи с указанием их типов. Круглые скобки необходимы, даже если для данного варианта вариантная часть отсутствует. Следует отметить, что вариантная часть не завершается своей операторной скобкой end, как у обычной конструкции CASE, т.к. далее идет завершающая операторная скобка end всего типа. В стандарте языка Паскаль перед тем, как использовать один из вариантов записи, переменной выбора варианта необходимо присвоить соответствующе значение: Fig := Sguare;MySguare. Side := 5.0;
 Fig := Circle;
 MyCircle. Radius := 7.5;
 В Turbo Pascal эту операцию  делать необязательно, хотя, если переменная выбора задана, ее затем можно в программе посмотреть, чтобы определить, какой задан вариант. Более того, задание значения переменной выбора ни на что не оказывает влияния, и следующий фрагмент эквивалентен рассмотренному выше: Fig := Circle;MySguare. Side := 5.0;
 Fig := Sguare;
 MyCircle. Radius := 7.5;
 В тип-записи допустимо не вводить переменную выбора вариантов, а перечислить лишь разные варианты, например: Transf = recordcase Integer of
 1: (_Word: Word);
 2:   (_TwoSymb:   array!1..2]   of  Char)
 end;
 
 
 |