Вне зависимости от вида используемого файла работа с ним производится следующим образом.
Описание файловой переменной
В момент запуска программы на диске могут находиться тысячи файлов, и программа не имеет возможности получить информацию обо всех них. Более того, такая информация в программе не нужна. Когда программе требуется получить доступ к какому-либо файлу, она делает это посредством специальной файловой переменной, определяющей имя файла на диске и его состояние в контексте данной программы (возможное состояние файлов обсуждается ниже). Через эту переменную и ведется в дальнейшем вся работа с файлом в программе.
Описание файловой переменной зависит от типа используемого файла
· для текстовых файлов применяется переменная типа Text
Var
<имя переменной>: Text;
· для двоичных нетипизированных файлов применяются файловые переменные типа File
Var
<имя переменной>: File;
· для двоичных типизированных файлов применяются переменные типа File с указанием типа элементов в файле после ключевого слова of:
Var
<имя переменной>: File of <имя типа>;
Пример 1. Описание файловых переменных для файлов разных типов
Program Files1;
Var
T1: Text | {описание файловой переменной с именем T1 для работы с текстовыми файлами} |
B1: File; | {описание файловой переменной с именем B1 для работы с двоичными нетипизированными файлами} |
B2: File of Integer; | {описание файловой переменной с именем B2 для работы с двоичными типизированными файлами, элементы которых имеет тип Integer} |
Begin
…
End.
Задание 1. Опишите файловые переменные для работы с двоичными типизированными файлами, элементы которых содержат:
- возраста учащихся школы;
- температуру воздуха с точностью до сотых;
- площади стран мира;
- ASCII коды символов.
Сопоставление файловой переменной файлу на диске
|
На данном этапе происходит связывание файловой переменной с реальным файлом, находящимся на диске.
Связывание осуществляется процедурой Assign (от англ. Assign – назначать), имеющей следующий вид:
Assign (<Файловая переменная>, <Имя файла>);
В качестве Файловой переменной может быть любая переменная файлового типа, описанная в разделе описания переменной. В качестве Имени файла – строковое выражение (заключается в апострофы), содержащее имя файла, удовлетворяющее требованиям операционной системы.
Пример 2. Сопоставление файловой переменной файлу на диске
Program Files2;
Var
T: Text; | {описание файловой переменной с именем T для работы с текстовыми файлами} |
Begin | |
Assign (T, ‘game.txt’); | {сопоставление файловой переменной T файлу с именем game.txt, находящемуся в текущем каталоге} |
End.
Задание 2. Напишите часть программы, содержащую фрагмент сопоставления файловой переменной F файлу ishodnik.pas, находящемуся на диске А:\ в каталоге Reshenie.
Задание 3. Напишите часть программы, содержащую фрагмент сопоставления файловой переменной G файлу ishodnik.pas, находящемуся в каталоге Zadanie, расположенном в каталоге, содержащем программу.
Задание 4. Напишите часть программы, содержащую фрагмент сопоставления файловой переменной K файлу ishodnik.pas, находящемуся в том же каталоге, что и программа (в текущем каталоге).
Открытие файла
Каждый файл, которому сопоставлена файловая переменная, в любой момент времени выполнения программы может находиться в одном из трех состояний:
|
1) Файл закрыт: с ним нельзя выполнять никаких действий. Данный режим устанавливается для файла при сопоставлении ему файловой переменной.
2) Файл открыт для чтения: для файла допустима операция получения элемента, на который указывает указатель текущего элемента.
3) Файл открыт для записи: для файла допустима операция добавления или изменения текущего элемента, на который указывает указатель текущего элемента.
4) Добавление информации в файл.
Открытие файла для чтения производится процедурой Reset (англ. Reset – сбросить) с одним параметром – файловой переменной, определяющей, какой именно файл следует открыть для чтения:
Reset (<Файловая переменная>);
Открытие файла для записи производится процедурой Rewrite (англ. Rewrite – перезаписать) с одним параметром – файловой переменной, определяющей, какой именно файл следует открыть для записи:
Rewrite (<файловая переменная>);
Процедуры Reset и Rewrite требуют некоторого пояснения. Если файл открывается программой для чтения, то он должен существовать на диске, то есть файловая переменная должна содержать имя реально существующего файла. Если данное условие не выполняется, то при попытке открытия не существующего файла будет выдана ошибка Error 2: File not Found-Ошибка2: Файл не найден.
Процедура Rewrite не требует наличия файла, которому сопоставлена файловая переменная: если файл с таким именем не существует, то он будет автоматически создан. Если файловая переменная ссылается на файл с недопустимым именем, например, содержащим пробелы, то при попытке открытия его для записи будет выдана та же самая ошибка, что и при открытии несуществующего файла для чтения. Если файловая переменная ссылается на существующий файл, то при открытии для записи все его содержимое будет удалено.
|
ВНИМАНИЕ!
Самая распространенная ошибка начинающих программистов – это эксперименты с файлами, содержащими тексты исходных программ, в результате чего стираются исходные тексты программ. Никогда не используйте для отладки программы полезные файлы. Если программа действительно должна работать с такими файлами, обязательно создавайте их резервные копии.