Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_1.doc
Скачиваний:
43
Добавлен:
28.03.2015
Размер:
710.14 Кб
Скачать
      1. 2.11.2. Операции над записями

Допускается применение оператора присваивания и к записям в целом, если они имеют один и тот же тип. Например,

Friend := BestFriend;

После выполнения этого оператора значения полей записи Friend станут равными значениям соответствующих полей записи BestFriend.

      1. 2.11.3. Записи с вариантами

Строго фиксированная структура записи ограничивает возможность ее применения. Поэтому в языке Delphi имеется возможность задать для записи несколько вариантов структуры. Такие записи называются записями с вариантами. Они состоят из необязательной фиксированной и вариантной частей.

Вариантная часть напоминает условный оператор case. Между словами case и of записывается особое поле записи – поле признака. Оно определяет, какой из вариантов в данный момент будет активизирован. Поле признака должно быть равно одному из расположенных следом значений. Каждому значению сопоставляется вариант записи. Он заключается в круглые скобки и отделяется от своего значения двоеточием.

type <имя записи> = record

<список имен полей1>: тип1;

...

<список имен полей…>: тип…;

case <поле признака>: ordinalType of

<список значений1>: (вариант1);

...

<список значений…>: (вариант…);

end,

где <поле признака> - корректный идентификатор, который может принимать значения порядкового типа; ordinalType – идентификатор порядкового типа; <список значений…> - список значений поля признака, разделенных ‘,’; (вариант…) – список имен полей с типами, заключенных в круглые скобки.

Пример описания записи с вариантами:

type

TFigure = record

X, Y: Integer;

case Kind: Integer of

0: (Width, Height: Integer); // прямоугольник

1: (Radius: Integer); // окружность

end;

Обратите внимание, что у вариантной части нет отдельного end, как этого можно было бы ожидать по аналогии с оператором case. Одно слово end завершает и вариантную часть, и всю запись.

    1. 2.12. Файлы

      1. 2.12.1. Понятие файла

С точки зрения пользователя файл — это именованная область данных на диске или любом другом внешнем носителе. В программе файл предстает как последовательность элементов некоторого типа. Так как размер одного файла может превышать объем всей оперативной памяти компьютера, доступ к его элементам выполняется последовательно с помощью процедур чтения и записи.

Для файла существует понятие текущей позиции. Она показывает номер элемента, который будет прочитан или записан при очередном обращении к файлу. Чтение-запись каждого элемента продвигает текущую позицию на единицу вперед. Для большинства файлов можно менять текущую позицию чтения-записи, выполняя прямой доступ к его элементам.

В зависимости от типа элементов различают три вида файла:

  • файл из элементов фиксированного размера; элементами такого файла чаще всего являются записи;

  • файл из элементов переменного размера (нетипизированный файл); такой файл рассматривается просто как последовательность байтов;

  • текстовый файл; элементами такого файла являются текстовые строки.

Для работы с файлом в программе объявляется файловая переменная. В файловой переменной запоминается имя файла, режим доступа (например, только чтение), другие атрибуты. В зависимости от вида файла файловая переменная описывается по-разному.

Для работы с файлом, состоящим из типовых элементов переменная объявляется с помощью словосочетания file of, после которого записывается тип элемента:

var

F: file of TPerson;

К моменту такого объявления тип TPerson должен быть уже описан (см. выше).

Объявление переменной для работы с нетипизированным файлом выполняется с помощью отдельного слова file:

var

F: file;

Для работы с текстовым файлом переменная описывается с типом TextFile:

var

F: TextFile;