Внешний файл может быть обычным файлом, расположенным на жестком диске компьютера, или файлом, связанным с каким-либо внешним устройством. Файловая переменная используется а программе в качестве параметра процедур работы с файлами.
После установления связи внешнего файла с файловой переменной внешний файл надо открыть для записи или чтения. При открытии файла выполняются необходимые системные операции, подготавливающие файл к записи или считыванию информации.
Файл создается или пополняется, когда в него что-то записывают. Каждая операция записи добавляет к файлу новую компоненту. Компоненты могут добавляться только к концу последовательного файла. Мы можем себе представить связанный с файлом маркер, который говорит нам, куда можно вставить новую компоненту. На рисунке 7.2 такой маркер представляется в виде стрелки .
а)
|
б)
Рисунок 7.2 - Запись в файл
На рисунке 7.2 (а) показан пустой файл, маркер которого указывает позицию, куда можно поместить первую запись, а рисунок 7.2 (6) показывает файл, в который записаны уже четыре компоненты, причем его маркер установлен в ту позицию, куда надо помещать пятую компоненту.
Операция установки маркера на начало файла и приготовления его для записи информации выполняется с помощью вызова стандартной процедуры
Rewrite (stopka)
Эта операция одновременно уничтожает всю имеющуюся в данный момент в файле stopka информацию. Ситуация, возникающая после выполнения этой процедуры, отражена на рисунке 7.2 (а).
Чтобы записать в файл очередную компоненту, мы заносим нужные данные в переменную stopka и вызываем процедуру put (stopka), результатом работы которой будет создание новой компоненты файла в той позиции, куда указывал маркер, после чего маркер перемещается на одну позицию вправо.
Предположим, что мы описали
var
text : Card;
и что text содержит информацию, предназначенную для записи в файл. Тогда операторы
stopka : = text;
put (stopka);
можно сокращенно записать так:
Write (stopka, text) ;
Создав файл, мы можем читать из него информацию. Перед началом чтения из файла stopka выполняется процедура
Reset (stopka);
Эта процедура переместит маркер файла на его начало, как показано на рисунке 7.3 (а) она также передаст информацию из первой компоненты файла в переменную stopka.
|
а) |
|||||||||
|
б) |
|||||||||
в)
Рисунок 7.3 - Чтение из файла
Чтобы прочитать следующую компоненту, нужно вызвать процедуру
get (stopka);
которая продвинет маркер и скопирует информацию из следующей компоненты в переменную stopka . Может наступить такой момент, когда после очередного перемещения маркера вправо мы не обнаружим там никакой информации — рисунок 7.3 (в). В этом случае значение переменной stopka не может быть определено, а булевская функция еоf (stopka) выдаст значение true. Таким образом, после обращения к процедуре getвозникает одна из следующих ситуаций:
еоf (stopka) = false и stopkaсодержит очередную компоненту
или
еоf (stopka) = true и stopka не определена.
Если файл оказывается пустым в тот момент, когда мы читаем из него первую запись, как на рисунке 7.2 (а), значение функции eof (stopka) будет равно trueнепосредственно после вызова процедуры reset. Поэтому лучше сделать проверку, обратившись к функции eofперед тем, как вызывать get. Можно также использовать процедуру read:
геаd (stopka, text), что эквивалентно операторам
text := stopka ;
get (stopka);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.