Описание |
Директива компилятора $R имеет две формы. Во-первых, она определяет файл ресурса, который будет откомпилирован. Во-вторых, она определяет, должен ли Delphi добавить код для проверки границ массива.
Версия 1:
Определяет файл ресурса. Смотрите $Resource для более подробной информации.
Версии 2 и 3: По умолчанию, оно выключено (-), означая, что "плохой" доступ к массиву пройдет незамеченным, показав себя в трудно отлаживаемой части кода.
Рекомендуется включить $R, чтобы обнаружить проблемы границ массива. Это приведет к вызову исключения, позволяя проверить код и исправлять найденные точки отказа.
|
|
Примечания |
$R FileName эквивалентна $Resource FileName.
$R- эквивалентна $RangeChecks Off.
$R+ эквивалентна $RangeChecks On.
Она может и должна быть установлена в вашем коде только один раз.
$R- является значением по умолчанию.
|
|
Похожие команды |
$RangeChecks Определяет, проверяет ли Delphi границы массива
$Resource Определяет файл ресурса, который будет включен в приложение
Array Тип данных содержащий индексируемую коллекцию данных
| |
|
Пример кода : Захват проблем звязанных с массивом. |
var
myArray : array[1..5] of string;
i : Integer;
begin // Проверка диапазона включена
{$R+}
// Массив начинается с 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 // Проверка диапазона выключена
{$R-}
// Массив начинается с 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
|
|