Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры и функции для работы с файлами

Открытие и закрытие файлов

Для открытия фай­лов используются процедуры Reset, Rewrite и Append. Форма обращения к ним:

Reset (файловая переменная);

Rewrite (файловая переменная);

Append (файловая переменная);

где файловая переменная - это переменная, связанная с физическим файлом или логическим устройством с помощью Assign.

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

При попытке открыть процедурой Reset несуществующий файл или иниции­ровать чтение из логического выводного устройства (например, из PRN) возника­ет ошибка.

Паскаль допускает и чтение (Read) и запись (Write) в ранее созданные типи­зированные файлы, открытые с помощью процедуры Reset. Это позволяет кор­ректировать и дополнять созданные типизированные файлы.

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

Процедура Append открывает ранее созданный текстовый файл для его до­полнения новыми записями: указатель файла устанавливается в его конец, после последней записи файла.

Процедура Close (файловая переменная); закрывает файл. Но связь файло­вой переменной с именем физического файла, установленная с помощью Assign, сохраняется. Поэтому файл можно в программе многократно открывать и за­крывать по мере необходимости. Процедура Close обеспечивает сохранность созданных в файле записей. При нормальном завершении программы действия процедуры Close выполняются и без ее вызова, автоматически, по отношению ко всем открытым файлам. Созданные типизированные файлы закрывать опера­тором Close обязательно. Повторное закрытие файлов недопустимо.

 

 

Процедура Read (var F, V1, …Vn) обеспечивает ввод (копирование) чисел, символов и строк из физического файла, связанного с логическим файлом F, в области ОП, соответствующие переменным Vi, определенных в списке данных оператора. Процедура игнорирует признаки EOLN, т.е. игнорирует признаки конца строки.

При вводе данных оператором Read совершаются следующие операции:

1) выделенное очередное вводимое значение сначала передается в буфер ввода;

2) затем оно преобразуется в форму переменной (определен­ную при объявлении), для которой оно вводится;

3) после это­го копируется в область ОП, зарезервированную для переменной при ее объявлении.

Последовательность данных, вводимых из файла, должна соответствовать последовательности имен списка данных.

При использовании в качестве логической переменной F стандартного файла слово Input можно не писать:

Read (список ввода); или Read ( Input, список ввода);.

Процедур а Write (var F, V1, …Vn) выводит в физический файл, связанный с переменной F, одно или несколько значений, хранящихся в ОП с адресами, соответствующими переменным Vi. С ее помощью можно выводить (копировать) числа, символы, строки и логические значения из ОП в файл или на логическое устройство (например, на экран или принтер). Перед выводом значение преобразуется из формы его внутреннего представления (на­пример, из числа с плавающей точкой) в форму, требуемую при выводе в соот­ветствии с форматом вывода (например, в форму числа с фиксированной точ­кой), и только после этого выводится в физический файл.

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

Процедура AssignCrt (файловая переменная); модуля Crt связывает текстовый файл с устройством Crt (терминалом).

Файловая переменная - имя переменной типа текстового файла.

Установка связи логического файла с клавиатурой или с экраном зависит от того, как будет открыт этот файл:

• для ввода данных с клавиатуры - процедурой RESET или

• для вывода данных на экран - процедурой REWRITE.

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

Переключение текстовых файлов программы на работу с экраном или клавиатурой.

Uses Crt; VAR Fl, F2, F3: TEXT; А, В, С: BYTE;

BEGIN Assign (Fl, ' '); Assign (F2, ‘CON1’); AssignCrt (F3);

Rewrite (Fl); Rewrite (F2); Rewrite (F3); { открыть для вывода на экран }

Write (Fl, A); Write (F2, В); Write (F3, С);

Close (Fl); Close (F2); Close (F3); { - закрыть файлы }

Reset (Fl); Reset (F2); Reset (F3); { - открыть для ввода данных}

Read (Fl, A); Read (F2, В); Read (F3, С); {с клавиатуры }

Close (Fl); Close (F2); Close (Fl); { - закрыть файлы }

END.

Кроме того, с файлами любых типов можно ис­пользовать следующие процедуры и функции стандартного модуля System: Eof (конец), Erase (стереть), ReName (переименовать), IOResult (ошибка результата), ChDir (изменить каталог), MkDir (создать каталог), RmDir (переименовать каталог).

Форма обращения к функции EOF:

EOF (файловая переменная);

Например: WHILE NOT EOF (FILE1)...

Функция EOF возвращает значение TRUE, если указатель файла находится за последним элементом файла, и значение FALSE в противном случае. Файловая переменная может относиться к файлу любого типа. Если параметр функции (и круглые скобки) опущен, то используется стандартная файловая переменная INPUT.

Форма обращения к процедуре Erase:

Erase (файловая переменная);

Процедура Erase стирает физический файл, связанный в этот момент с этой файловой переменной. Файл должен быть закрыт. Например, если файл F свя­зан с помощью процедуры Assign с физическим файлом fl.rez, то после вы­полнения процедуры Erase (F); физический файл fl.rez будет стерт (удален).

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

Форма обращения к процедуре ReName:

ReName (файловая переменная, новое имя файла);

где новое имя файла - выражение типа string.

Например, если файл F присоединен к физическому файлу с именем fl.rez, то после выполнения процедуры ReName (F, 'f2.rez'); физический файл fl.rez получит имя f2.rez.

Выполнение операций ввода-вывода сопровождается автоматическим контролем со стороны компилятора. Существует возможность отклю­чения контроля директивой I- (обратное включение осуществляется ди­рективой I+). В этом случае для контроля правильности выполнения процедур ввода-вывода можно использовать значение функции IOResult.

Функция IOResult: Integer; - возвращает целое значение, представ­ляющее собой код ошибки неуспешно выполненной процедуры для работы с файлом или нуль в случае ее успешного выполнения.

После выполнения процедуры работы с файлом значение функции IOResult можно проанализировать и по результатам анализа определить дальнейшие программные действия. Например:

VAR F: FILE OF CHAR;

ASSIGN (F, 'FILE.DAT');

{$!-} { - отключение средств контроля системы }

RESET (F); { - открытие файла F }

{$!+} { - подключение средств контроля системы }

IF IORESULT <> О THEN... { - файл не открыт, не существует } ELSE... { - файл открыт, существует }

 

 

<== предыдущая лекция | следующая лекция ==>
Связь файловых переменных с физическими файлами | Способы печати результатов работы
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 496; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.