- •Алгоритмические языки и программирование работа с файлами
- •Брянск 2007
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Типизированные файлы
- •2.1.1. Объявление файловой переменной
- •2.1.2. Связывание файловой переменной
- •2.1.3. Открытие файла
- •2.1.4. Операции ввода/вывода
- •2.1.5. Дополнительные операции (применяемые только
- •2.1.6. Закрытие файла
- •2.2. Текстовые файлы
- •2.3. Нетипизированные файлы
- •2.4. Дополнительные подпрограммы для работы с файлами
- •2.4.1. Переименование и удаление
- •2.4.2. Обработка ошибок ввода/вывода
- •2.4.3. Операции с каталогами
- •2.4.4. Дополнительные операции
- •2.5. Примеры
- •2.5.1. Работа с типизированными файлами
- •2.5.2. Работа с текстовыми файлами
- •2.5.3. Работа с нетипизированными файлами
- •3. Порядок выполнения работы
- •4. Список заданий
- •4.1. Работа с типизированными файлами
- •4.2. Работа с текстовыми файлами
- •5. Контрольные вопросы
- •6. Список рекомендуемой литературы
2.1. Типизированные файлы
Типизированный файл – это файл, все компоненты которого одного типа данных, заданного при объявлении файловой переменной.
2.1.1. Объявление файловой переменной
Для работы с типизированным файлом необходимо объявить файловую переменную (логический файл). Типизированные файлы могут быть любого типа данных, кроме файлового и опирающегося на файловый тип
Var
<имя_файловой_переменной>: File of <тип компонентов>;
Например:
Var
FR: File of real; {Объявление файла вещественных чисел}
FI : File of integer; {Объявление файла целых чисел}
{Объявление файловой переменной может быть выполнено по-другому:}
Type
FIO= string[20];
SPISOK=File of FIO;
Var
STUD, PREP: SPISOK; {STUD и PREP файловые переменные.}
{Еще одно объявление файловой переменной:}
Type
Pasport = Record {Объявление типа c именем Pasport}
Tel: string[6]; {Телефон}
Fam: string[17]; {Фамилия}
NF: string[2]; {Имя и отчество}
end;
Var
Fv1: File of Pasport; {Объявление файловой переменной (логического файла) абонентов ГТС}
2.1.2. Связывание файловой переменной
с физическим файлом
В Pascal связь между объявленным логическим файлом и реальным физическим файлом устанавливается с помощью процедуры
Assign(имя_файловой_переменной, имя файла);
При этом имя файла можно задавать как в виде строковой константы, так и в виде строковой переменной.
Например:
{Связь переменной FI c файлом Phone.dat}
Assign(FI, 'Phone.dat');
{Присвоение значения строковой переменной File_Name}
File_Name:='Tarif.dat';
{Связь переменной FR с физическим файлом, имя которого хранится в переменной File_Name}
Assign(FR, File_Name);
2.1.3. Открытие файла
Обработка компонентов файла становится возможной только после его открытия. Поэтому после связывания логического файла с физическим его необходимо открыть с помощью одной из процедур:
Reset(имя_файловой_переменной);
или Rewrite(имя_файловой_переменной);
При работе с файлом используется понятие текущей записи. В каждый момент времени для обработки файла (чтения или записи) доступен только один компонент открытого файла, который и называется текущей записью. Будем говорить, что текущей называется та запись, на которой находится указатель записи в файле. При этом важно помнить, что записи типизированного файла нумеруются, начиная с нуля.
Процедура Reset открывает существующий файл как для чтения, так и для записи. При открытии указатель текущей позиции файла устанавливается в его начало. Если физический файл с указанным именем отсутствует, то возникает ошибка во время выполнения программы (runtime error), которую можно подавить включением в код программы директивы компилятора {$I-}.
Процедура Rewrite открывает файл для записи, подготовляя его к заполнению с нулевого элемента. Попытка открыть с помощью этой процедуры существующий файл приводит к очистке текущего содержимого файла (файл становится пустым).
Например:
Reset(FI); {Открытие файла FI}
Rewrite(FR); {Открытие файла FR для записи}