Параметр «I/O cheking»

Отвечает за проверку результатов ввода/вывода при работе с файлами в стиле Pascal.

Если вы работаете с Append/Assign/Rewrite и т. п., то включайте данный параметр при отладке приложения.

Параметр «Overflow cheking»

Контролирует результаты арифметических действий и поднимает исключение в тех случаях, когда результат выходит за диапазон переменной.

Чтобы было проще понять различия между данным параметром и Range checking, рассмотрим следующий код:

procedure TForm1.FormCreate(Sender: TObject);

var

C: Cardinal;

B: Byte;

I: Integer;

begin

I:= -1;

B:= I;

C:= I;

ShowMessage(IntToStr(C - B));

end;

Данный код не поднимет исключения при включенном параметре Overflow cheking. Хоть здесь и присваиваются переменным недопустимые значения, но не производится математических операций над ними. Однако исключение будет поднято при включенном параметре «Range checking».

А теперь рассмотрим второй вариант кода:

procedure TForm1.FormCreate(Sender: TObject);

var

C: Cardinal;

B: Byte;

begin

B:= 255;

Inc(B);

C:= 0;

C:= C - 1;

ShowMessage(IntToStr(C - B));

end;

Здесь уже не будет реакции от параметра Range checking, но произойдет поднятие исключения EIntegerOverflow, за который отвечает Overflow cheking, на строчках Inc(B) и C:= C - 1 из-за того, что результат арифметической операции не может быть сохранен в соответствующей переменной.

Таким образом, при работе с переменными оба параметра взаимодополняют друг друга. Overflow cheking не настолько критичен, как Range checking, но всё же желательно держать его включенным при отладке приложения.

Примечание. Если вы реализуете криптографические алгоритмы, то в них, как правило, операция переполнения является штатной. В таких ситуациях выносите код в отдельный модуль и в начале модуля прописывайте директиву {$OVERFLOWCHECKS OFF} для отключения проверки переполнений в текущем модуле.

Чтобы установленные на вкладке опции вступили в силу, нужно заново выполнить сборку проекта.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: