- •Цель работы
- •Основные понятия и определения
- •Теоретические сведения
- •Типизированные файлы
- •Нетипизированные файлы
- •Текстовые файлы
- •Сводная таблица процедур и функций для работы с файлами
- •Примеры решения задач с использованием файлов
- •Типизированный файл
- •Текстовый файл
- •Задание
- •Программа
- •Задания
- •Контрольные вопросы
В примерах из файла F в область памяти, задаваемую переменной Buffer, считывается Count блоков данных. Во втором случае в переменную Result дополнительно заносится число реально считанных блоков данных. Такая ситуация возможна в тех случаях, когда конец файла встречается раньше, чем будет считано заданное число блоков. Если значения Count и Result различаются, это говорит о неполном чтении.
Аналогичные правила действуют для записи данных в файл:
BlockRead(F, Biffer, Count); BlockRead(F, Biffer, Count, Result);
Частичная запись возможна в том случае, если на диске заканчивается свободное место.
Текстовые файлы
Текстовый файл содержит строки текста различной длины. Каждая строка завершается символами «Возврат каретки» (код 13) и «Перевод строки» (код 10). При обычном просмотре эти символы на экране не отображаются, а интерпретируются компьютером как признак окончания одной строки и начала следующей.
Внимание! Текстовый файл не эквивалентен объявлению типизированного файла с элементами типа «строка»!
Объявление текстового файла выглядит следующим образом:
Var
FT: Text;
Как и в случае других типов файлов, перед работой с текстовым файлом, предварительно необходимо связать файловую переменную с файлом на диске:
Assign(FT,’log.txt’);
При работе с текстовым файлом разрешается либо чтение, либо запись. Открытие файла для чтения или записи выполняется аналогично типизированным файлам процедурами ReSet или ReWrite. Для текстовых файлов, помимо процедур ReSet/ReWrite, определена еще одна процедура открытия:
Append(F);
Данная процедура открывает файл для записи, при этом новые данные добавляются в конец файла, прежнее содержимое файла сохраняется (в отличие от процедуры ReWrite).
Далее в зависимости от способа открытия файла можно либо читать из него данные:
Read(FT, i,j); ReadLn(FT, s);
Либо записывать в него данные:
Write(FT, a,b,c); WriteLn(FT, Result);
При чтении/записи данных применяются те же правила, что и при вводе/выводе с клавиатуры/на экран, т.е. можно использовать форматирование:
WriteLn(F, x:5:2, y:10:3);
Диаграмма последовательности вызываемых процедур для текстовых файлов:
Assign
ReSet |
Append |
ReWrite |
Read / ReadLn
Write / WriteLn
Close