M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Контроль ошибок ввода/вывода

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

    Контроль за ошибками ввода/вывода зависит от применяемых функций. При использовании доступа через Win32 API все функции возвращают код ошибки Windows, который и нужно проанализировать.

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

    • {$I+}— контроль включен (установлен по умолчанию); 
    • {$I-} — контроль отключен.

    Класс EinOutError отличается тем, что у него есть поле ErrorCode. При возникновении этой исключительной ситуации вы можете получить его значение и принять решение. Основные коды имеют такие значения:

    •  2 — файл не найден;
    •  3 — неверное имя файла;
    •  4 — слишком много открытых файлов;
    •  5 — доступ запрещен;
    •  100 — достигнут конец файла;
    •  101 — диск переполнен;
    •  106 — ошибка ввода.

    При отключенном контроле в случае возникновения ошибки выполнение программы продолжается без остановки. Однако в этом случае устранение возможных последствий ошибки возлагается на разработчика. Для этого применяется функция

    function lOResult: Integer;

    которая возвращает значение 0 при отсутствии ошибок.