The Overflow checking option regulates whether the compiler checks if certain arithmetic operations (+, -, *, Abs, Sqr, Inc, Dec, Succ, and Pred) produce a number that is too large or too small to fit into the data type. You can use compiler options, {$OVERFLOWCHECKS ON} and {$OVERFLOWCHECKS OFF} (or short forms {$Q+} and {$Q-}), to turn this option on and off in a specific part of a program.
For example, the following program will silently increment $FFFFFFFF to 0 in the first Inc statement but will raise EIntOverflow exception in the second Inc statement:
procedure TfrmCompilerOptions.btnOverflowErrorClick(Sender: TObject); var i: cardinal; begin {$Q-} i := $FFFFFFFF; // Without overflow checks, Inc will work and i will be 0 Inc(i);
{$Q+} i := $FFFFFFFF; // With overflow checks, Inc will raise an exception Inc(i); end;
Enabling overflow checking doesn't make a big change in the program speed, so you can freely use it whenever it is needed. I would suggest turning it on at least in debug configuration as that will help with finding errors in the code.