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. Программа должна включать:
Создание и просмотр типизированного файла, состоящего из записи заданной структуры. Оформить управляющий модуль с меню, просмотр файла оформить в виде таблицы. Создание и просмотр оформить в виде пользовательского модуля.
Ввод полного имени файла (создаваемого и просматриваемого)организовать в диалоге на предмет выявления ошибок открытия файла.
Обработка ошибок ввода полного имени файла при открытии файла (reset, rewrite).