Справочник функций и процедур Delphi: $R

  Навигация по первой букве:

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

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

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

2 {$R-}

3 {$R+}

Delphi Sources

Описание
Директива компилятора $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
 


Последние добавленные на сайт исходники

DeLiKaTeS Tetris (Тетрис)

TDictionary Custom Sort

Fast Watermark Sources

3D Designer

Sik Screen Capture

Patch Maker

 

Айболит (remote control)

ListBox Drag & Drop

Доска для игры Реверси

Графические эффекты

Рисование по маске

Перетаскивание изображений

 

Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software (источник – "DelphiBasics")

Группа ВКонтакте