Связывание файловой переменной с именем файла 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Связывание файловой переменной с именем файла



Любые другие файлы, а также логические устройства становятся доступны программе только после выполнения особой процедуры откры­тия файла (логического устройства). Эта процедура заключается в связы­вании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:

 

ASSIGN (<ф.п.>, <имя файла или, л.у.>);

 

Здесь <ф.п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа);

<имя файла или л.у.> - текстовое выражение, содержащее имя фай­ла или логическое устройство.

Если имя файла задается в виде пустой строки, например, ASSIGN(f,"), то в зависимости от направления обмена данными файло­вая переменная связывается со стандартным файлом INPUT или OUTPUT.

Имя файла - это любое выражение строкового типа, которое строит­ся по правилам определения имен в MS DOS (операционной системе ПК):

- имя содержит до восьми разрешенных символов; разрешенные символы - это прописные и строчные латинские буквы, цифры и символы:!@#$%^&()'~-_

- имя начинается с любого разрешенного символа;

- за именем может следовать расширение - последовательность до трех разрешенных символов; расширение, если оно есть, отделяется от имени точкой.

Перед именем может ставиться так называемый путь к файлу: имя диска и/или имя текущего каталога и имена каталогов вышестоящих уровней.

Имя диска - это один из символов A...Z, после которого ставится двоеточие. Имена А: и В: относятся к дисковым накопителям на гибких дискетах, имена С:. D: и т.д. - к жестким дискам.

За именем диска может указываться имя каталога, содержащего файл. Если имени каталога предшествует обратная косая черта, то путь к файлу начинается из корневого каталога, если черты нет - из текущего каталога, установленного в системе по умолчанию. За именем каталога может следовать одно или несколько имен каталогов нижнего уровня. Каждому из них должна предшествовать обратная косая черта. Весь путь к файлу отделяется от имени файла обратной косой чертой. Максималь­ная длина имени вместе с путем - 79 символов, например:

 

var

finp:text;

fout: file of string;

const

name = ' c:\dir\subdir\out.txt';

assign(finp, '123.dat');

assign(fout, name);

 

Инициация файла

Инициировать файл означает указать для этого файла направление передачи данных. В Турбо Паскале можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно.

Для чтения файл инициируется с помощью стандартной процедуры RESET:

 

RESET (<ф. п.>);

 

Здесь <ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом или логическим устройством-при­емником информации.

При выполнении этой процедуры дисковый файл или логическое устройство подготавливается к чтению информации. В результате специ­альная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на компонент с порядковым номером 0.

Если делается попытка инициировать чтение из несуществующего файла или из логического устройства PRN, возникает ошибка периода исполнения, которая может быть сообщена программе ненулевым значе­нием встроенной функции IORESULT типа WORD. Например, следую­щий фрагмент программы позволяет установить, существует ли требуе­мый файл на диске:

 

var

f: file of char;

assign(f,'myfile.dat');

{$I-} {Отключить контроль ошибок ввода-вывода}

reset(f):

{SI+} {Включить контроль ошибок ввода-вывода)

If IOResult о 0 then

..... {Файл не существует}

else

..... {Файл существует}

 

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

В Турбо Паскале разрешается обращаться к типизированным файлам, открытым процедурой RESET (т.е. для чтения информации), с помощью процедуры WRITE (т.е. для записи информации). Такая возможность позволяет легко обновлять ранее созданные типизированные файлы и при необходимости расширять их. Для текстовых файлов, открытых процедурой RESET, нельзя использовать процедуру WRITE или WRITELN.

Стандартная процедура REWRITE (<ф.п.>) инициирует запись информации в файл или в логическое устройство, связанное ранее с файловой переменной <ф. п. >. Процедурой REWRITE нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0.

Стандартная процедура APPEND (<ф.п.>) инициирует запись в ра­нее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура APPEND приме­нима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TEXT (см. выше). Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, исполь­зование процедуры APPEND приведет к закрытию этого файла и откры­тию его вновь, но уже для добавления записей.



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 622; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.138.253 (0.006 с.)