Директива $RangeChecks компилятора Delphi определяет, проверяет ли Delphi границы массива.
- {$RangeChecks Off}
- {$RangeChecks On}
Директива компилятора $RangeChecks определяет, должен ли Delphi добавить код, для проверки границ массива.
По умолчанию она выключена, означая, что "плохой" доступ к массиву пройдёт незамеченным, показав себя в трудном для отладки части кода.
Рекомендуется включить $RangeChecks, чтобы обнаружить проблемы границ массива. Это приведет к вызову исключения, позволяя проверить код и исправлять найденные точки отказа.
Примечания.
$RangeChecks эквивалентна $R.
Она может и должен быть установлена в вашем коде только один раз.
Значение по умолчанию – $RangeChecks Off.
Директива компилятора $RangeChecks: Захват проблем связанных с массивом
var
myArray : array[1..5] of string;
i : Integer;
begin
// Проверка диапазона включена
{$RangeChecksOn}
// Массив начинается с 0 - обычно нормально, но наш
// массив начинается с 1.
for i := 0 to 5 do
begin
myArray[i] := 'Element '+IntToStr(i);
ShowMessage('myArray['+IntToStr(i)+'] = '+myArray[i]);
end;
end;
Результат
Delphi выдаст исключение ERangeError
Директива компилятора $RangeChecks: Игнорирование проблем границ массива
var
myArray : array[1..5] of string;
i : Integer;
begin
// Проверка диапазона выключена
{$RangeChecksOff}
// Массив начинается с 0 - обычно нормально, но наш
// массив начинается с 1.
for i := 0 to 5 do
begin
myArray[i] := 'Element '+IntToStr(i);
ShowMessage('myArray['+IntToStr(i)+'] = '+myArray[i]);
end;
end;
Результат
myArray[0] = Element 0
myArray[1] = Element 1
myArray[2] = Element 2
myArray[3] = Element 3
myArray[4] = Element 4
myArray[5] = Element 5
Похожие функции, процедуры и команды
$R — определяет, проверяет ли Delphi границы массива.
$Resource — определяет файл ресурса, который будет включен в приложение.
