Описание |
Директива компилятора $RangeChecks определяет, должен ли Delphi добавить код, для проверки границ массива.
По умолчанию она выключена, означая, что "плохой" доступ к массиву пройдёт незамеченным, показав себя в трудном для отладки части кода.
Рекомендуется включить $RangeChecks, чтобы обнаружить проблемы границ массива. Это приведет к вызову исключения, позволяя проверить код и исправлять найденные точки отказа.
|
|
Примечания |
$RangeChecks эквивалентна $R.
Она может и должен быть установлена в вашем коде только один раз.
Значение по умолчанию - $RangeChecks Off.
|
|
Похожие команды |
$R Определяет, проверяет ли Delphi границы массива
$Resource Определяет файл ресурса, который будет включен в приложение
| |
|
Пример кода : Захват проблем звязанных с массивом. |
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
|
|
| Пример кода : Игнорирование проблем границ массива |
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
|
|