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
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия