Запись — это структура данных, состоящая из фиксированного количества компонентов, называемых полями записи. В отличие от массива компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.Имя поля должно быть уникальным в пределах записи.
Структура объявления типа записи такова:
имя_типа = record
список_полей end;
Здесь имя_типа — правильный идентификатор; record, end — зарезервированные слова (запись, конец); список__полей — последовательность разделов записи, между которыми ставится точка с запятой.
Каждый раздел записи состоит из одного или нескольких идентификаторов полей, отделяемых друг от друга запятыми. За идентификатором (идентификаторами) ставится двоеточие и описание типа поля (полей), например:
type
Data = record
Day, Month: Byte;
Year : Word;
end;
var
a,b : Data;
Различают фиксированные и вариантные записи.
Фиксированная запись состоит из конечного числа полей, ее объявление имеет следующий формат:
Record
<Имя поля1> : <Тип поля>;
. . .
<Имя поляN> : <Тип поля>;
end;
Вариантная запись, так жекак и фиксированная, имеет конечное число полей, однако предоставляет возможность по-разному интерпретировать области памяти, занимаемые полями. Все варианты записи располагаются в одном месте памяти и позволяют обращаться к ним по различным именам.
type
Forma = record
Name : String;
case byte of
0: (BirthPlace: String [40]):
1: (Country : String [20]:
EntryPort : String [20]:
Date1 : 1..31;
Date2 : 1..31)
end:
Для обращения к конкретному полю необходимо указывать имя записи и имя поля, разделенные точкой.
Пример.Использование записи.
var Man: record
Name: string;
Salary: real;
Note: string;
end;
. . .
Man.Name:='Иванов M.P.';
Man.Salary:=500;
. . .
2.Файлы
Под файлом понимается именованная область внешней памяти компьютера (жесткого или гибкого диска, компакт-диска и т. п.).
Файловый тип можно задать одним из трех способов:
имя = File of тип;
имя = TextFile;
имя = File;
Здесь имя — имя файлового типа (правильный идентификатор);
File, of — зарезервированные слова (файл, из);
TextFi1е — имя стандартного типа текстовых файлов;
тип — любой тип Object Pascal, кроме файлов, объектов, вариантов, интерфейсов и динамических массивов.
Пример:
type
Product = record
Name: String;
Code: Word;
Cost: Comp;
end;
Text80 = File of String[80]:
var
F1: File of Char;
F2: TextFile;
F3: File;
F4: Text80;
F5: File of Product;
В зависимости от способа объявления можно выделить три вида файлов:
В наших примерах: F1, F4 и F5 — типизированные файлы, F2 — текстовый файл, F3 — нетипизированный файл.
3.Вариантные типы
Вариант — это тип Variant, разработанный специально для тех случаев, когда на этапе компиляции программист не может сказать, какого типа данные будут использоваться в выражении или в параметрах вызова подпрограмм.
В переменную-вариант можно поместить:
· целое или вещественное число;
· логическое значение;
· строку;
· время и/или дату;
· OLE-объект;
· массив произвольной размерности и длины, содержащий элементы одного из перечисленных выше типов:
Все эти типы считаются совместимыми с типом variant и в случае необходимости преобразования типов выполняются автоматически.
Для вариантной переменной определены два специфических значения:
- unassigned - назначается переменной при ее описании и указывает, что значение переменной пока не присвоено и не определено;
- Null — указывает, что переменная содержит значение неопределенного типа или что значение было потеряно.
4.Указатели
Оперативная память компьютера представляет собой совокупность ячеек для хранения информации — байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, они позволяют обращаться к любому байту памяти. Object Pascal предоставляет в распоряжение программиста гибкое средство управления динамической памятью — так называемые указатели. Указатель — это переменная, которая в качестве своего значения содержит адрес байта памяти. С помощью указателей можно размещать в динамической памяти любой из известных в Object Pascal типов данных. Лишь некоторые из них (Byte, Char, Short I nt, Boolean) занимают во внутреннем представлении один байт, остальные — несколько смежных. Поэтому на самом деле указатель адресует лишь первый байт данных.
Различают указатели типизированные и нетипизированные. Типизированный указатель может ссылаться на данные определенного типа, который задается при объявлении указателя или описании типа указателя. При этом используется значок ^перед именем типа адресуемых данных.
Формат описания типа для типизированного указателя:
Туре <Тип указателя> = ^<Тип адресуемых данных>
Нетипизированный указатель имеет тип Pointer и может ссылаться на данные любого типа.
С помощью указателя можно получить доступ к значению адресуемых данных. Для этого используется разыменовывание указателя — справа от имени указателя приписывается значок ^.
Для определения адреса объекта, к которому можно обратиться с помощью указателя, используется операция @ , записываемая перед именем этого объекта
Пример.Использование указателя
var p: ^integer;
p1:point;
n, k: integer;
. . .
p:=@n;
n:=100;
k:=p^+10;
. . . После выполнения операторов значение переменной k будет равно 110.