TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Операции над текстовыми файлами

Как уже установлено, текстовые файлы состоят из строк, поделённых на символы. Каждая строка заканчивается парой символов CR/LF, файл заканчивается символом Ctrl-Z. Ctrl-Z заносится в открытый файл в момент его закрытия.

Текстовые файлы могут быть связаны с набором данных либо с логическими устройствами. В первом случае обработка данных, содержащихся в файле, может осуществляться после выполнения процедуры Assign и одной из процедур Reset, Rewrite, Append. По окончании обработки должна быть выполнена процедура Close. В другом случае, т.е. при связи файла с устройством, можно воспользоваться предопределённой файловой переменной. В таком случае не допускается выполнение процедур Assign, Reset, Rewrite, Close по отношению к этой переменной либо можно рассматривать устройство как набор данных с символическим именем устройства, воспользоваться процедурой Assign для связи файла с устройством, затем приступить к обработке файла.

Процедура Assign

Синтаксис: Assign (TextVar, StrExp)

TextVar - имя файловой переменной типа text, StrExp - строковое выражение. Файл TextVar не должен быть открытым. TextVar не может быть именем предопределённой файловой переменной.

Процедура Assign связывает файл TextVar с набором данных либо с логическим устройством, имя которого определено StrExp.

Пример:

Var
Device : text;
...
Assign (Device,'CON:');

Имя файловой переменной Device представляет текстовый файл.

Процедура Assign связывает файл Device с консолью.

Процедура Assign открывает файл Device.

Процедура Reset

Синтаксис: Reset (TextVar)

TextVar - имя файловой переменной типа text. Перед выполнением процедуры Reset файл TextVar должен быть связан с существующим набором данных или с логическим устройством. TextVar не может быть именем предопределённой файловой переменной.

Процедура Reset открывает файл TextVar. Если файл TextVar связан с логическим устройством, то он уже открыт и использование процедуры Reset ничего не изменит.

Пример:

Var
InpFile : text;
...
Assign (InpFile,'OLDBOOK');
Reset (InpFile);

Процедура Assign свяжет текстовый файл InpFile с набором данных OLDBOOK.

Процедура Reset откроет текстовый файл InpFile для чтения.

Процедура Rewrite

Синтаксис: Rewrite(TextVar)

TextVar - имя файловой переменной типа text. Перед выполнением процедуры Rewrite файл TextVar должен быть связан с существующим набором данных или с логическим устройством. TextVar не может быть именем предопределённой файловой переменной.

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

Пример:

Var
OutFile : text;
...
Assign (OutFile,'NEWBOOK');
Rewrite (OutFile);

Процедура Assign связывает текстовый файл OutFile с набором данных NEWBOOK.

Процедура Rewrite открывает файл OutFile для записи. После открытия рассматриваемый файл пуст.

Процедура Append

Синтаксис: Append (TextVar)

TextVar - имя файловой переменной типа text. Перед выполнением процедуры Append файл TextVar должен быть связан с существующим набором данных или с логическим устройством. TextVar не может быть именем предопределённой файловой переменной.

Процедура Append открывает файл TextVar. Если файл TextVar связан с логическим устройством, то он уже открыт и процедура Append не приведёт ни к каким результатам. Если файл TextVar связан с несуществующим набором данных, то он будет открыт, а указатель файла будет установлен к конец.

Пример:

Var
Extend : text;
...
Assign (Extend,'BOOK');
Append (Extend);

Процедура Assign связывает текстовый файл Extend с набором данных BOOK.

Процедура Append открывает файл Extend для расширения.

Процедура Close

Синтаксис: Close (TextVar)

TextVar - имя файловой переменной типа text. TextVar не может быть именем предопределённой файловой переменной.

Процедура Close закрывает файл TextVar.

Пример:

Var
Output : text;
begin
Assign (Output,'JB.DOC');
Rewrite (Output);
Writeln (Output,'janek');
Close (Output)
end

При явном определении имя Output не является именем предопределённой файловой переменной, поэтому использование процедур Assign и Rewrite правильное и обязательное.

После выполнения приведённой программы будет создан набор данных из 8 символов.

Обращение к процедуре Close приведёт к вводу символа Ctrl-Z и выполнению действий, заканчивающих образование набора данных JB.DOC, содержащего последовательность символов: janek CR LF Ctrl-Z.

Функция Eof

Синтаксис: Eof (TextVar)

TextVar - имя файловой переменной типа text. Если TextVar имеет значение Input, то обращение может быть упрощено до Eof.

Функция Eof может применяться к файлу, связанному с множеством данных или с логическим устройством. В обоих случаях результатом функции будет величина типа boolean с значениями true или false.

Если файл связан с набором данных, то результатом функции Eof будет значение true, когда указатель файла находится перед Ctrl-Z или в конце. В противном случае результатом функции будет величина false.

Если файл связан с логическим устройством, то результатом функции Eof будет значение true когда последним интерпретируемым символом будет Ctrl-Z. В противном случае результатом функции будет величина false.

Пример:

Var
ChrVar : char;
begin
Read (ChrVar);
Writeln (Eof)
end

Если при выполнении программы с консоли будут введены символы Ctrl-Z и CR, то будет выведено сообщение FALSE.

Это произойдёт потому, что символ Ctrl-Z будет проигнорирован, т.е. результатом функции Eof будет величина со значением false.

Функция SeekEof

Синтаксис: SeekEof (TextVar)

TextVar - имя файловой переменной типа text. Если TextVar имеет значение Input, то обращение может быть упрощено до SeekEof.

Действие функции SeekEof аналогично действию функции Eof. Будут пропущены пробелы, знаки табуляции, CR и LF, результат будет таким же, как и для функции Eof.

Пример:

Var
TxtVar : text;
begin
Assign (TxtVar,'STRANGE.DOC');
Reset (TxtVar);
Writeln (SeekEof (TxtVar))
end

Если набор данных STRANGE.DOC состоит из пустой строки, то после выполнения программы будет выведено сообщение TRUE.

 

На главную страницу
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz