Средства обработки файлов
Каждому файлу в языке ставится в соответствие файловая переменная, которая должна быть связана с конкретным внешним файлом. Поэтому перед началом работы с файлом необходимо установить данное соответствие. Для этого в языке используется процедура: Assign(Var F; Name:String); где F - переменная любого файлового типа, а строковое выражение Name содержит полное имя файла, удовлетворяющее требованиям операционной системы. Процедура Assign всегда предшествует другим процедурам работы с файлами, так как ставит в соответствие конкретному файлу на внешнем устройстве логическую файловую переменную языка, к которой впоследствии будут обращаться все другие файловые процедуры. Недопустимо использование процедуры Assign для уже открытого файла. Это значит, что если было назначено имя конкретного набора данных файловой переменной с помощью процедуры Assign, а затем этот файл был открыт, то, прежде чем использовать ту же файловую переменную для нового набора данных, необходимо с помощью процедуры Close закрыть этот файл. Для работы с файлом прежде всего необходимо его открыть. В языке Паскаль предусмотрены для этого две процедуры: Reset(var F: file); - открывает существующий файл; Rewrite(var F: file); -создает и открывает новый файл. При описании обеих процедур параметр file означает файловую переменную любого типа. Открытие внешнего файла с помощью процедуры Reset в случае его отсутствия на диске может привести к ошибке при выполнении программы. Пример1. Стандартное открытие файла Assign(F, ' '); Reset(F); Процедура Rewrite создает и открывает новый файл. Использование этой процедуры требует особого внимания. При попытке создать и открыть новый файл с именем уже существующего на диске набора данных действие процедуры Rewrite сведется к удалению этого набора и созданию нового пустого файла с тем же именем.
Если процедура Rewrite используется для текстового файла, то к открываемому новому набору данных в дальнейшем могут быть применимы только операции записи. Операция закрытия файла является логическим окончанием работы с любым открытым файлом. Для этого служит процедура Close (Var F); Использование процедуры Close позволяет устранить связь файловой переменной с внешним файлом, установленную с помощью процедуры Assign. Пример 2. Полная цепочка команд для создания простого текстового файла с именем WORK.TXT: … Var F: text; begin Assign(F, ' WORK. ТХТ'); Rewrite(F); Write(F, 'Простой текстовый файл'); Close(F); end. К языковым средствам обслуживания файлов необходимо отнести процедуры переименования и удаления неоткрытых файлов. Использование этих процедур не зависит от типа файла. Rename(var F; NewName: string); Процедура переименовывает неоткрытый файл F любого типа. Новое имя задается строкой NewName. ] Erase(var F); Процедура удаляет неоткрытый внешний файл любого типа, задаваемый переменной F. Обе процедуры нельзя использовать для уже открытых файлов. Операции удаления и переименования осуществляются только для реально существующих файлов, иначе возникает ошибка выполнения программы. Пример 3. Удаление или переименование файла Var F: file; Ch: char; St: string; begin Write('Введите имя файла: '); Readln(St); {Чтение имени} Assign(F, St); {Назначить имя файловой переменной} Write('Удалить файл (У), Переименовать(П), Выход(В)'); Readln(Ch); case Ch of 'У ', ' y': Erase(F); {Удаление файла} 'П','п': begin Write('Введите новое имя файла: '); Readln(St); Rename(F, St); {Переименование файла} end; 'В','в': Halt(1); end; end. В приведенном примере альтернативный выбор тех или иных действий зависит целиком от того, что будет введено с клавиатуры. Этот вариант программы не позволяет обработать ошибочные ситуации в случае, если файла с именем St не существует на диске.
Для того чтобы файловые операции выполнялись без ошибок, необходимо использовать специальную функцию IOresult. Функция работает без параметров и возвращает значение типа integer, представляющее статус последней выполненной операции ввода-вывода. Использование этой функции в программах возможно лишь в том случае, если на время выполнения файловых операций отключена стандартная проверка операций ввода-вывода. Для этих целей используется либо специальная опция в интегрированной системе, либо директива компилятора {$I}, которая может задаваться внутри текста программы. Пример 4. Вариант программы для проверки существования файла на диске Var F: file; St: string; begin Write('Введите имя файла: '); Readln(St); Assign(F, St); {$I-} {Отключить стандартную обработку ошибок} Reset(F); {Открыть файл} {$I+} {Включить стандартную обработку ошибок} if IOresult = 0 then begin Writeln('Файл существует и нормально открыт'); Close(F); {Закрыть файл} end else Writeln('Файла с именем '+St+' на диске нет'); end. После корректного выполнения операции ввода-вывода функция IOresult возвращает значение, равное нулю, в остальных случаях функция возвращает соответствующий код ошибки. Рассмотренные операции ввода-вывода охватывают все типы файлов в Турбо Паскале и характеризуют взаимоотношения файловой и операционной систем. Итак, для работы с любым типом файлов используются следующие процедуры и функции:
Текстовые файлы
Текстовые файлы представляют собой совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак конца строки. Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не только типа String или Char, но и других типов (целых, вещественных - при вводе, целых, вещественных, логических - при выводе). При работе с текстовыми файлами необходимо, прежде всего, объявить соответствующую файловую переменную: Var F:text; Начало работы с текстовым файлом - стандартное: файловой переменной ставится в соответствие имя файла (процедура Assign), а затем открывается новый текстовый файл (процедура Rewrite) или открывается существующий текстовый файл (процедура Reset). Далее в таблице представлены процедуры и функции для работы с текстовыми файлами.
Читайте также: D) денежные средства населения Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|