Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  

форум программистов

Основы Delphi
$R
Деректива компилятора
Определяет, проверяет ли Delphi границы массива unit
  
1 {$R FileName}

2 {$R-}

3 {$R+}
Описание
Директива компилятора $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
 
Здесь нужно купить рекламу за 2 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

форум программистов

© Форум Delphi  |  Форум Pascal   |  Блог программистов   |  Исходники Delphi   |  Автор сайта  |  Ссылки   |  Английская версия