Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практика.docx
Скачиваний:
4
Добавлен:
20.03.2016
Размер:
196.91 Кб
Скачать

2.2. ФункцияIoResult

Функция IOresult в TP 7.0 предназначена для поиска ошибок, возникающих при работе с файлами. Эта функция возвращает результат последней операции ввода/вывода,если автоматический контроль за ошибками,возникающими при выполнении операций ввода/вывода, отключен с помощью директивы компилятора {$I-}.При безошибочном выполнении ввода \вывода функция IOresult всегда возвращает результат, равный нулю. Поэтому ее используют в операции сравнении с нулем. При использовании функцииIOresult необходимо помнить о том, что она возвращает величину, которую можно интерпретировать как флаг ошибки лишь в том случае, когда эта функция вызывается следом за операцией ввода\вывода. А если вы хотите провести анализ ошибки в программе позже, вам придется сохранить возвращаемое значение в некоторой промежуточной переменной.

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

Reset (‘C:\TP\test .dat’);

IF ‘IOResult<>oTHEN

Write(‘ошибка при открытие файла.’);

{$I+} (включение контроля ошибок ввода/вывода)

2.3. Обработка ошибок ввода-вывода

Выполнение операции, осуществляющих действие с файлами на внешних устройствах, с достаточно высокой вероятностью может вызывать возникновение тех или иных ошибочных ситуаций. Поэтому при программировании нужно проявлять повышенную аккуратность и предвидеть ошибочные ситуации. В программе на языке TP установлены следующие правила обработки ошибочных ситуаций. Автоматически проводится проверка. При обнаружении ошибки прекращается работа программы и выводится диалоговое окно с кодом ошибки. Можно так же предусмотреть свою реакцию на ошибку. Для этого нужно отключить автоматический контроль ({SI-}). В этом случае при возникновении ошибки программа небудет закончена.

Например:

Assign(f,’c:/my file’);

{SI-} (Отключение автоматического контроля)

Reset(f):

IfIOResult<>0 then (возникаетошибка)

Write(‘Ошибка при открытие файла’)

{SI+} (включение автоматического контроля)

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

Считается, что при успешном выполнении операции обращение к IOResult дает в результате 0, не нулевое значение свидетельствует о возникшей ошибке. При необходимости можно провести более детальный анализ кода ошибки.

Например:

Assign(f,’c:/my file’);

{SI-} (Отключение автоматического контроля)

Reset(t):

Code:=IOresult; (получаем код результата)

Ifcode<>0 then (возникаетошибка)

Begin

Write(‘ошибка при открытии файла’);

Casecodeof

1:write(‘файлненайден’);

3:write(‘маршрут не найден’);

4:write(‘слишком много открытых файлов’);

5:write(‘запрет доступа к файлу’);

12:write(‘некорректный код доступа к файлу ’);

Else

……

End;

End;

{SI+} (Включение автоматического контроля)

2.4. Постановка задачи

Составить и отладить программу на языке TP. Программа должна включать:

  1. Создание и просмотр типизированного файла, состоящего из записи заданной структуры. Оформить управляющий модуль с меню, просмотр файла оформить в виде таблицы. Создание и просмотр оформить в виде пользовательского модуля.

  2. Ввод полного имени файла (создаваемого и просматриваемого)организовать в диалоге на предмет выявления ошибок открытия файла.

  3. Обработка ошибок ввода полного имени файла при открытии файла (reset, rewrite).