Описание |
Директива компилятора $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
|
|