Ошибки открытия файла

Попытка открыть файл может завершиться неудачей и вызвать ошибку времени выполнения программы. Причин неудачи при открытии файлов может быть несколько. Например, программа попытается открыть файл на гибком диске, который не готов к работе (не закрыта шторка накопителя, или диск не вставлен в накопитель). Другая причина — отсутствие открываемого в режиме добавления файла (файла нет — добавлять некуда).

При запуске программы из Delphi в случае ошибки во время открытия файла возникает исключение, и на экране появляется диалоговое окно с сообщением (рис. 70.).

Рис. 70.Пример сообщения об ошибке открытия файла (программа запущена из Delphi)

Если программа запускается из Windows, то окно с сообщением об ошибке выглядит иначе (рис. 71.).

Рис. 71.Пример сообщения об ошибке открытия файла . (программа запущена из Windows)

Программа может взять на себя задачу контроля за результатом выполнения инструкции открытия файла. Сделать это можно, проверив значение функции IOResult (input-Output Result — результат ввода/вывода). Функция IOResuit возвращает 0, если операция ввода/вывода завершилась успешно; в противном случае — код ошибки (не ноль).

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

На рис. 72. приведена блок-схема алгоритма открытия файла для добавления, обеспечивающего создание файла (и тем самым устраняющего ошибку, возникающую при попытке открыть несуществующий файл) в случае, если открываемого для добавления файла на диске еще нет.

Рис. 72.Алгоритм открытия файла с обработкой возможной ошибки

Ниже приведен фрагмент программы, реализующий приведенный выше алгоритм открытия файла.

AssignFile(f,filename);

{$I-}

Append(f) // открыть для добавления

{$I+}

if IOResult<> 0 // ошибка открытия

thenRewrite(f); // открыть для записи

// здесь открыт существующий или новый файл








Дата добавления: 2014-12-01; просмотров: 929;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.