Операции ввода/вывода
Чтение данных из типизированных и текстовых файлов выполняют процедуры Read и Readln.
Процедура Read имеет различное объявление для текстовых и других типизированных файлов:
procedure Read([var F: Text;] V1 [, V2,…,Vn]);
Для текстовых файлов;
procedure Read(F, VI [, V2,…,Vn]);
Для других типизированных файлов.
При одном вызове процедуры можно читать данные в произвольное число переменных. Естественно, что тип переменных должен совпадать с типом файла. При чтении в очередную переменную читается ровно столько байтов из файла, сколько занимает тип данных. В следующую переменную читается столько же байтов, расположенных следом. После выполнения процедуры текущая позиция устанавливается на первом непрочитанном байте. Аналогично работают несколько процедур Read для одной переменной, выполненных подряд.
Процедура:
procedure Readln([ var F: Text; ] VI [, V2,…,Vn ]);
Считывает одну строку текстового файла и устанавливает текущую позицию на следующей строке. Если использовать процедуру без переменных vi..vn, то она просто передвигает текущую позицию на очередную строку файла.
Процедуры для записи в файл write и writeln описаны аналогично:
procedure Write([var F: Text; ] PI [, P2,…, Pn]); procedure Writein([ var F: Text; ] PI [, P2,…,Pn ]);
Параметры P1, P2,…, Pn могут быть одним из целых или вещественных типов, одним из строковых типов или логическим типом. Но у них есть возможность дополнительного форматирования при выводе. Каждый параметр записи может иметь форму:
Рn [: MinWidth [: DecPlaces ] ]
Здесь:
- Рn – выводимая переменная или выражение;
- MinWidth – минимальная ширина поля в символах, которая должна быть больше 0;
- DecPlaces – содержит количество десятичных символов после запятой при отображении вещественных чисел с фиксированной точкой.
Обратите внимание, что для текстовых файлов в функциях Read и write файловая переменная F может быть опущена. В этом случае чтение и запись осуществляются в стандартные файлы ввода/вывода. Когда программа компилируется как консольное приложение (флаг {$APPTYPE CONSOLE}), Delphi автоматически связывает входной и выходной файлы с окном консоли.
Для контроля за текущей позицией в файле применяются две основные функции. Функция EOF(F) возвращает значение True, если достигнут конец файла. Функция EOLN(F) аналогично сигнализирует о достижении конца строки. Естественно, в качестве параметра в функции необходимо передавать файловую переменную.
Процедура:
procedure Seek(var F; N: Longint);
Обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной).