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
$Q
Тип
Определяет, проверяет ли Delphi целочисленные и перечислимые границы System unit
  
1 {$Q-}
2 {$Q+}
Описание
Директива компилятора $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
 


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