Шаг 62.
Контроль операций ввода/вывода

    Этот шаг посвящен организации контроля за правильностью выполнения операций ввода/вывода с файлами.

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

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

    Рассмотрим правила обработки ошибочных ситуаций в языке программирования Pascal. По умолчанию при выполнении операций ввода/вывода автоматически производится контроль за возникновением ошибки. Если ошибка обнаружена, то выполнение программы прекращается, а на экран дисплея выводится краткое диагностическое сообщение, объясняющее суть ошибки.

    В системе Turbo Pascal имеется возможность организовать программную обработку ошибок, используя функцию IOResult. Для этого нужно отключить контроль за выполнением операций директивой компилятору {$i-}. Затем выполнить "подозрительное" действие и снова включить контроль за выполнением операций директивой {$i+}. Далее сразу же необходимо проверить значение функции IOResult.

    Проиллюстрируем использование этой функции на конкретном примере: составить программу удаления файла с диска с использованием функции IOResult.

Program Delete;
Var
  KF: File Of Char;
Begin
  Assign(KF,'MYFILE.DOC'); {Связали файловую переменную с файлом}
  {$i-}  {Отключили контроль за выполнением операции}
  Erase(KF); {Выполнили "подозрительную" операцию}
  {$i+}  {Включили контроль за выполнением операции}
   {Проверили значение функции IOResult}
  If not (IOResult=0)  Then WriteLn ('ОШИБКА ПРИ УНИЧТОЖЕНИИ ФАЙЛА');
End.
Текст этой программы можно взять здесь.

    В результате работы этой программы на экран будет выдано сообщение "ОШИБКА ПРИ УНИЧТОЖЕНИИ ФАЙЛА" вследствие того, что файла с именем "MYFILE.DOC" на диске нет. Если файл с таким именем существует, то никакого сообщения на экран не выводится.

    На следующем шаге мы начнем знакомиться с модулями.


Предыдущий шаг Содержание Следующий шаг