Директива $OverFlowChecks компілятора Delphi визначає, чи перевіряє Delphi межі цілого числа та переліку.
- {$OverFlowChecks Off}
- {$OverFlowChecks On}
Директива компілятора $OverFlowChecks визначає, чи слід Delphi додавати код для перевірки переповнення значень операції цілого числа та переліку.
За замовчуванням це значення вимкнено, тобто неправильна операція з цілим числом або переліком залишиться непоміченою, виявляючи себе в частині коду, яку важко налагодити.
Рекомендується ввімкнути $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 цілочисленні та перераховані кордони.
