Programowanie w języku Delphi » Dyrektywy kompilatora

$R

Składnia:{$R filename} lub {$RESOURCE filename}
{$R+} lub {$R-} lub {$RANGECHECKS ON} lub {$RANGECHECKS OFF}
Wartość domyślna:{$R-} lub {$RANGECHECKS OFF}


Dyrektywa {$R} ma dwojakie znaczenie. Pierwsza wersja umożliwia włączenie pliku zasobu. Domyślnie pliki zasoby posiadają rozszerzenie *.res, tak więc nie jest konieczne podawanie rozszerzenia:

{$R 'My resources'}


Nazwę pliku należy podać w pojedyńczych apostrofach. Możliwe jest określenie rozszerzenia pliku jeżeli jest ono inne niż *.res. Możliwe jest wykorzystanie symbolu *. W każdym kodzie źródłowym, formularza projektu Delphi dla Win32, znajdziesz taką linię:

{$R *.dfm}


Taka dyrektywa oznacza włączenie do projektu pliku o rozszerzeniu *.dfm, a nazwie odpowiadającej nazwie formularza.

Druga wersja dyrektywy powoduje sprawdzanie czy nie próbujemy odwołać się do elementu tablicy z poza zasięgu lub przypisać zbyt długi łańcuch do zmiennej łańcuchowej o ograniczonej długości. Spójrz na poniższą metodę:

procedure TMyForm.MyButtonClick(Sender: TObject);
var
  Foo : array[5..10] of Integer;
  I : Integer;
begin
  {$R+}
 
  for I := 0 to 10 do
    Foo[I] := I;
end;


W pętli przypisujemy tutaj elementy do tablicy poczynając od indeksu zero, co jest nieprawidłowe (najmniejszy indeks tablicy to 5). Wykonanie takiego kodu spowoduje wygenerowanie wyjątku ERangeError. Wyłączenie dyrektywy (wartość domyślna) spowoduje iż żaden wyjątek nie będzie generowany.