Директива $OverFlowChecks компилятора Delphi определяет, проверяет ли Delphi целочисленные и перечислимые границы.
- {$OverFlowChecks Off}
- {$OverFlowChecks On}
Директива компилятора $OverFlowChecks определяет, должен ли Delphi добавлять код, чтобы проверить переполнение значения целочисленных и перечислимых операций.
По умолчанию поставлено в Off, подразумевая, что плохая целочисленная или перечислимая операция пройдет незамеченной, показывая себя в трудной для отладки части кода.
Рекомендуют включить $OverFlowChecks, чтобы обнаружить переполнение прежде, чем они вызовут проблемы. Это приведет к подъему исключений, позволяя корректировать код, находя точки отказа.
Примечания.
$OverFlowChecks эквивалентна $Q.
Она может и должна только быть установлена только один раз в вашем коде.
$OverFlowChecks Off является значением по умолчанию.
Директива компилятора $OverFlowChecks: Перехват переполненных значений
var
myNumber : Byte;
begin
// Проверка переполнения включена
{$OverFlowChecks On}
// Байт может содержать числа до 255
myNumber := 255;
ShowMessage('myNumber = '+IntToStr(myNumber));
// Превышение 255 выдаст исключение
Inc(myNumber);
ShowMessage('myNumber = '+IntToStr(myNumber));
end;
Результат
myNumber = 255
Delphi выдаст исключение EIntOverflow
Директива компилятора $OverFlowChecks: Игнорирование переполненных значений
var
myNumber : Byte;
begin
// Выключение проверок переполнения
{$OverFlowChecks Off}
// Байт может содержать числа до 255
myNumber := 255;
ShowMessage('myNumber = '+IntToStr(myNumber));
// Превышение 255 сбросит значение до 0
Inc(myNumber);
ShowMessage('myNumber = '+IntToStr(myNumber));
end;
Результат
myNumber = 255
myNumber = 0
Похожие функции, процедуры и команды
$Q — определяет, проверяет ли Delphi целочисленные и перечислимые границы.
