Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
$I
Деректива компилятора
Позволяет встроить код указанного файла в модуль unit
  1 {$I FileName}; 2 {$I-}; 3 {$I+}
Описание
Директива компилятора $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
 


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика



Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки? Slurm подготовили для вас особенный продукт!





форум программистов


© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия