Описание |
Директива компилятора $I охватывает две цели. Во-первых, для включения кода файла в текущий модуль. Во-вторых, для управления выдачей исключений при ошибке IO (ввода/вывода).
Версия 1
Это очень полезно для включения директив компилятора или общего кода во все ваши модули для гарантирования последовательности и отдельной точки управления.
По умолчанию расширение файла - .pas, поэтому для .pas файлов требуется только имя файла. Используйте кавычки, если имя файла включает один или более пробелов.
Например:
Common.pas file:
{$ReferenceInfo On}
{$RangeChecks On}
{$OverFlowChecks On}
Unit1.pas file:
...
{$I Common}
...
Версия 2 и 3
Значение по умолчанию {$I +} генерирует EInOutError исключение, когда происходит ошибка IO.
При {$I-} исключение не генерируется. Вместо этого, ответственность за проверку операций ввода/вывода возлагается на IOResult подпрограмм.
|
|
Примечания |
$I FileName эквивалентно $Include FileName.
$I- эквивалентна $IOChecks Off.
$I+ эквивалентна $IOChecks On.
Эта директива может использоваться в вашем коде многократно.
|
|
Похожие команды |
$Include Позволяет коду в указанном файле быть включенным в Модуль
$IOChecks
IOResult Содержит возвращаемый код последней операции ввода/вывода
| |
|
Пример кода : Заманивание в ловушку IO исключений, и использование IOResult |
var
error : Integer;
begin // Попытка создать новый подкаталог в текущем каталоге // Выключение проверки ошибок ввода/вывода
{$I-}
MkDir('TempDirectory');
// Каталог создался?
error := IOResult;
if error = 0
then ShowMessage('Каталог создался')
else ShowMessageFmt('Создание каталога потерпело неудачу с ошибкой %d',[error]);
// Попытка создать новый подкаталог в текущем каталоге - произойдёт ошибка!
MkDir('TempDirectory');
error := IOResult;
if error = 0
then ShowMessage('Каталог создался снова')
else ShowMessageFmt('Повтор создания провалился с ошибкой %d',[error]);
// Удаление каталога для очистки
RmDir('TempDirectory');
// Включение проверки ошибок ввода/вывода
{$I+}
end;
|
Каталог создался
Повтор создания провалился с ошибкой 183
|
|