1.2.65. $R или $RANGECHECKS : Проверка диапазона

Вверх  Предыдущий  Следующий

По умолчанию компилятор не генерирует код для проверки диапазонов индексов массивов, перечисляемых типов, поддиапазонов и т.п. Переключатель {$R+} указывает компилятору, чтобы он генерировал код для проверки этих индексов. Если во время выполнения программы индекс или перечисляемый тип выходит за пределы указанного диапазона, то генерируется ошибка времени выполнения, а программа завершается с кодом 201. Это может случиться, когда выполняется преобразование типов (явное или неявное) с перечисляемыми типами или поддиапазонами.

Переключатель {$RANGECHECKS OFF} указывает компилятору, что НЕ требуется генерировать код проверки диапазона. Это, возможно, приведёт к неправильной работе программы, но ошибки времени выполнения не будут генерироваться.

ПРИМЕЧАНИЕ

Стандартные функции val и Read будут также проверять диапазоны, если их вызов компилируется в режиме {$R+}.

В Delphi проверка диапазона работает только на уровне процедур. В Free Pascal директива {$R } может применяться на уровне выражений.