Справочник функций и процедур Delphi: $Q

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

 

$Q
Тип
Определяет, проверяет ли Delphi целочисленные и перечислимые границы System unit
  
1 {$Q-}
2 {$Q+}

Google  
 
Описание
Директива компилятора $Q определяет, должен ли Delphi добавлять код для проверки переполнения значений целочисленных и перечислимых операций. По умолчанию оно не установлено, означая, что "плохие" целочисленные или перечислимые операции пройдут незамеченными, показывая себя в трудном для отладки части кода.

Рекомендуются включить OverFlowChecks, чтобы обнаружить переполнение прежде, чем они вызовут проблемы. Это приведет к вызову исключения, позволив проверить кода и идентифицировать точку отказа.
Примечания
$OverFlowChecks эквивалентна $Q.

Она может и должна быть установлена в вашем коде только один раз.

$Q- является значением по умолчанию.
Похожие команды
$OverFlowChecks  Определяет, проверяет ли Delphi целочисленные и перечислимые границы

 
Пример кода : Перехват переполненых значений
var
  myNumber : Byte;

begin
  // Проверка переполнения включена
  {$Q+}
  // Байт может содержать числа до 255
  myNumber := 255;
  ShowMessage('myNumber = '+IntToStr(myNumber));

  // Превышение 255 выдаст исключение
  Inc(myNumber);
  ShowMessage('myNumber = '+IntToStr(myNumber));
end;
myNumber = 255

Delphi выдаст исключение EIntOverflow
 
Пример кода : Игнорирование переполненых значений
var
  myNumber : Byte;

begin
  // Выключение проверок переполнения
  {$Q-}
  // Байт может содержать числа до 255
  myNumber := 255;
  ShowMessage('myNumber = '+IntToStr(myNumber));

  // Превышение 255 сбросит значение до 0
  Inc(myNumber);
  ShowMessage('myNumber = '+IntToStr(myNumber));
end;
myNumber = 255
myNumber = 0
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook