Директива компилятора $R имеет две формы. Во-первых, она определяет файл ресурса, который будет откомпилирован. Во-вторых, она определяет, должен ли Delphi добавить код для проверки границ массива.
Версия 1:
Определяет файл ресурса. Смотрите $Resource для более подробной информации.
Версии 2 и 3: По умолчанию, оно выключено (-), означая, что "плохой" доступ к массиву пройдет незамеченным, показав себя в трудно отлаживаемой части кода.
Рекомендуется включить $R, чтобы обнаружить проблемы границ массива. Это приведет к вызову исключения, позволяя проверить код и исправлять найденные точки отказа.
Она может и должна быть установлена в вашем коде только один раз.
$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