1.2.38. $I или $IOCHECKS : Проверка ввода/вывода

На верх  Назад  Вперёд

Директива {$I-} или {$IOCHECKS OFF} указывает компилятору, что не нужно генерировать проверку кода ввода/вывода в программе. По умолчанию компилятор генерирует проверку кода ввода/вывода. Это поведение можно настроить глобально с помощью переключателя ‑Ci.

Если компиляция использует переключатель -Ci, то компилятор Free Pascal вставляет проверку кода ввода/вывода после каждого вызова кода ввода/вывода. Если происходит ошибка во время ввода или вывода, то будет генерироваться ошибка времени выполнения. Это переключатель можно также использовать отмены проверки.

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

Наоборот, директива {$I+} включает проверку вода/вывода до тех пор, пока не встретится директива выключения проверки.

Примечание:

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

При вызове функции IOResult из модуля system она возвращает текущий статус ввода-вывода и сбрасывает его.

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

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

assign(f, 'file.txt');
{$I-}
rewrite(f);
{$I+}
if IOResult<>0 then
  begin
    Writeln('Ошибка открытия файла: "file.txt"');
    exit
  end;

См. описание функции IOResult в Справочное руководство Free Pascal, где можно найти список всех возможных ошибок, которые могут произойти при проверке ввода/вывода.