Embarcadero Delphi                
            Tworzenie łatwo usuwalnych kontroli błędów środowiska wykonawczego
        
        
            
    Szukaj…
Wprowadzenie
To pokazuje, jak własną procedurę sprawdzania błędów w czasie wykonywania można łatwo włączyć, aby nie generowała narzutu kodu po wyłączeniu.
Trywialny przykład
{$DEFINE MyRuntimeCheck} // Comment out this directive when the check is no-longer required!
                         // You can also put MyRuntimeCheck in the project defines instead.
   function MyRuntimeCheck: Boolean;  {$IFNDEF MyRuntimeCheck} inline;  {$ENDIF}
   begin
      result := TRUE;
      {$IFDEF MyRuntimeCheck}
        // .. the code for your check goes here
      {$ENDIF}
   end;
 Koncepcja jest w zasadzie taka:
Zdefiniowany symbol służy do włączenia użycia kodu. Zapobiega również jawnemu wstawianiu kodu, co oznacza, że łatwiej jest umieścić punkt przerwania w procedurze sprawdzania.
Jednak prawdziwe piękno tej konstrukcji jest wtedy, gdy nie chcesz już czeku. Przez zakomentowanie $ define ( „//” put in-przed nim) będzie nie tylko usunąć kod wyboru, ale można również włączyć inline do rutyny i usuwać wszelkie narzuty ze wszystkich miejsc, w których powołuje rutyna! Kompilator całkowicie usunie wszystkie ślady czeku (zakładając, że samo wstawianie jest ustawione na „Włączone” lub „Auto”, oczywiście).
Powyższy przykład jest zasadniczo podobny do pojęcia „asercji”, a Twoja pierwsza linia może ustawić wynik na PRAWDA lub FAŁSZ odpowiednio do zastosowania.
Ale teraz możesz również używać tego rodzaju konstrukcji kodu, który rejestruje dane, rejestruje dane i cokolwiek innego. Na przykład:
   procedure MyTrace(const what: string);  {$IFNDEF MyTrace} inline;  {$ENDIF}
   begin
      {$IFDEF MyTrace}
        // .. the code for your trace-logging goes here
      {$ENDIF}
   end;
...
MyTrace('I was here');   // This code overhead will vanish if 'MyTrace' is not defined.
MyTrace( SomeString );   // So will this.