- •Часть II Оглавление
- •Строки. Процедуры и функции для работы со строками.
- •Множества. Операции над множествами.
- •Подпрограммы для работы со всеми типами файлов
- •Текстовые файлы
- •Бестиповые файлы
- •Типизированные файлы
- •Прямой доступ
- •Оператор with.
- •Вариантная запись.
- •Динамические структуры данных
- •Процедуры и функции. Рекурсия. Модули.
- •Основы объектно-ориентированного программирования
- •Графика
Подпрограммы для работы со всеми типами файлов
Процедуры
assign(var f; filename: string)
Связывает логический файл f с физическим файлом, имя которого задано в строке filename.
close(var f)
Закрывает открытый логический файл. Вызов процедуры close необходим при завершении работы с файлом, который был открыт для записи, поскольку при ее выполнении происходит выгрузка содержимого буфера.
erase(var f)
Уничтожает физический файл на диске, который был связан с файловой переменной f.
rename(var f; newname: string)
Переименовывает физический файл на диске, связанный с логическим файлом f.
reset(var f)
Открывает логический файл f для последующего чтения данных.
rewrite(var f)
Открывает логический файл f для записи данных. Если физический файл, с которым связана переменная f, существовал ранее, он очищается, то есть вся информация из него теряется. Если файл не существовал, он создается.
Функции
eof(var f): boolean
Возвращает значение true, если при чтении достигнут конец файла.
IOresult : integer
Возвращает целое число, соответствующее коду последней ошибки ввода-вывода. При нормальном завершении операции функция вернет значение 0. Функция IOresult работает только с ключом компиляции {$I-}.
Текстовые файлы
Текстовый файл можно открыть не только для чтения или записи с помощью процедур resetи rewrite, но и для добавления информации в конец. Для этого служит процедура append:
append(var f)
Для чтения из файла применяются процедуры:
read(f, список)
readln(f, [список])
Процедуры записи в текстовый файл:
write(f, список)
writeln(f, [список])
При записи в файл происходит преобразование из внутренней формы представления выводимых величин в символьные строки.
Чтение и запись выполняются последовательно, то есть считать/записать очередной символ можно только после аналогичной операции с предыдущим.
Бестиповые файлы
Бестиповые файлы предназначены для хранения участков оперативной памяти на внешних носителях. Чтение и запись производится через буфер "порциями", равными размеру буфера. Размер буфера, отличающийся от стандартного (128 байт), можно задать при открытии файла вторым параметром процедур reset и rewrite:
reset(var f: file; bufsize: word)
rewrite(var f: file; bufsize: word)
Непосредственно чтение и запись выполняются с помощью процедур blockread и blockwrite:
blockread(var f: file; var x; count: word; var num: word);
blockwrite(var f: file; var x; count: word; var num : word);
Процедура blockread считывает в переменную x количество блоков count. Длина блока равна размеру буфера. Значение count должно быть больше или равно 1. Необязательный параметрnum возвращает количество прочитанных блоков.
Процедура blockwrite выполняет запись в файл count блоков, начиная с адреса, заданного переменной x. Длина блока равна длине буфера. num возвращает число успешно записанных блоков.
Для бестиповых файлов применяется как последовательный, так и прямой доступ.
Типизированные файлы
Типизированные файлы применяются для хранения однотипных элементов в их внутренней форме представления. Тип компонент задается после ключевых слов file of.
Например:
type mass = array [1 .. 10] of integer;
var x: mas;
f : file of mass;
begin
assign(f, 'Newfile');
rewrite(f);
...
write(f, a, b);
close(f)
end.
За одну операцию записывается или считывается столько компонент, сколько перечислено в процедурах write или read.
