Руководство по языку B.Pascal 7

Файловый ввод-вывод


Файловая переменная в Паскале - это любая переменная файло- вого типа. В Паскале имеются три класса файлов: типизированный файл, текстовый файл и нетипизированный файл.

Примечание: Синтаксис записи типов файлов представлен в Главе 4, в разделе "Структурные типы".

Перед использованием файловой переменной она должна быть связана с внешним файлом с помощью вызова процедуры Assign. Внеш- ним файлом обычно является поименованный файл на диске, но он также может представлять собой устройство, например, клавиатуру или дисплей. Во внешних файлах сохраняется записанная в файл ин- формация, или они служат источниками информации, которая считыва- ется из файла.

Когда связь с внешним файлом установлена, для подготовки ее к операции ввода или вывода файловая переменная должна быть "отк- рыта". Существующий файл можно открыть с помощью процедуры Reset, а новый файл можно создать и открыть с помощью процедуры Rewrite. Текстовые файлы, открытые с помощью процедуры Reset доступны только по чтению, а текстовые файлы, открытые с помощью процедуры Rewrite, доступны только по записи. Типизированные и нетипизиро- ванные файлы всегда допускают как чтение, так и запись, независи- мо от того были они открыты с помощью процедуры Reset или с по- мощью процедуры Rewrite.

Любой файл, представляет собой линейную последовательность элементов, каждый из которых имеет тип элемента (или тип записи) файла. Каждый элемент файла имеет номер. Первый элемент файла считается нулевым элементом.

Обычно доступ к файлам организуется последовательно, то есть, когда элемент считывается с помощью стандартной процедуры Read или записывается с помощью стандартной процедуры Write, те- кущая позиция файла перемещается к следующему по порядку элементу файла. Однако к типизированным и нетипизированным файлам можно организовать прямой доступ с помощью стандартной процедуры Sееk, которая перемещает текущую позицию файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла можно использовать стандартные функции FilePоs и Filesize.


Когда программа завершает обработку файла, он должен закры- ваться с помощью стандартной процедуры Close. После полного зак- рытия файла связанный с ним внешний файл обновляется. Затем фай- ловая переменная может быть связана с другим внешним файлом.

По умолчанию при всех обращениях к стандартным функциям и процедурам ввода-вывода автоматически производится проверка на наличие ошибок. При обнаружении ошибки программа прекращает рабо- ту и выводит на экран сообщение об ошибке. С помощью директив компилятора {$I+} и {$I-} эту автоматическую проверку можно вклю- чить или выключить. Когда автоматическая проверка отключена, то есть когда процедура или функция была скомпилирована с директивой {$I-}, ошибки ввода-вывода, возникающие при работе программы, не приводят к ее останову. При этом, чтобы проверить результат вы- полнения операции ввода-вывода, нужно использовать стандартную функцию IОResult.

Для очистки ошибки, которая может произойти, вы можете выз- вать функцию IOResult. Если вы этого не сделаете, и текущим сос- тоянием является {$I+}, то из-за оставшейся ошибки IOResult сле- дующая операция ввода-вывода завершится с ошибкой.

Примечание: Если вы пишете программу дл Windows и не хотите, чтобы Windows обрабатывала за вас ошибки ввода-вы- вода на диск или другие ошибки ввода-вывода, вызовите SetErrorMode(1).


Содержание раздела