Delphi-Compiler-Direktiven

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Liste der Delphi-Compiler-Direktiven - Index

Die Delphi-Compiler-Direktiven sind folgendermaßen klassifiziert:

Eine Compiler-Direktive ist ein Kommentar mit einer speziellen Syntax. Die Compiler-Direktive beginnt mit einem $ (Dollar-Zeichen) als erstem Zeichen nach dem Kommentarzeichen. Darauf folgt der Name der Direktive (bestehend aus einem oder mehreren Buchstaben). Nach dem Namen und den erforderlichen Parametern können Kommentare folgen.

Compiler-Direktiven können deshalb überall dort verwendet werden, wo Kommentare erlaubt sind. Beachten Sie bitte, dass Kommentare, die mit dem doppelten Schrägstrich // beginnen, nicht für Compiler-Direktiven verwendet werden können. Zum Beispiel:

{$hints off}        // a Delphi compiler directive
(*$hints off*)      // a Delphi compiler directive
//$hints off        // just a commentary, ignored

Bei allen Direktiven mit Ausnahme von Schalter-Direktiven muss zwischen dem Namen und den Parametern mindestens ein Leerzeichen stehen.

In den folgenden Absätzen werden die Arten von Direktiven beschrieben.

Schalter-Direktiven

Schalter-Direktiven aktivieren bzw. deaktivieren bestimmte Compiler-Funktionen. Sie können die Direktive entweder mit ihrem langen Namen oder dessen Äquivalent mit einem Buchstaben angeben:

  • Bei Direktiven mit nur einem Buchstaben folgt unmittelbar auf den Buchstaben ein Minuszeichen (-) oder ein Pluszeichen (+). Zum Beispiel: {$A+}
  • Bei Direktiven mit mehreren Buchstaben geben Sie das Wort "on" bzw. "off" an. Zum Beispiel: {$ALIGN ON}

Schalter-Direktiven sind entweder global oder lokal:

  • Globale Direktiven beziehen sich auf die gesamte Compilierung und müssen vor dem Deklarationsabschnitt des zu compilierenden Programms oder der zu compilierenden Unit angegeben werden.
  • Lokale Direktiven betreffen nur den Teil der Compilierung, der sich von der Direktive bis zum nächsten Auftreten derselben Direktive erstreckt. Diese Direktiven können an jeder beliebigen Position stehen.

Sie können mehrere Schalter-Direktiven zu einer einzigen Direktive zusammenfassen, indem Sie sie durch Komma ohne Leerzeichen davor oder danach voneinander trennen. Zum Beispiel:

{$B+,R-,S-}

Diese Gruppierung kann nicht für Direktiven mit langen Namen verwendet werden. Diese müssen einzeln eingegeben werden. Zum Beispiel:

{$optimization on,hints off}        // everything starting with "," is treated like a comment here

Parameter-Direktiven

Parameter-Direktiven geben Parameter an, die die Compilierung betreffen, z.B. Dateinamen und Speicheradressen.

Bedingungsdirektiven

Mit Bedingungsdirektiven können Quelltextabschnitte anhand bestimmter Bedingungen (z. B. benutzerdefinierter Symbole) compiliert oder ignoriert werden.

Beispiele

Hier einige Beispiele für Compiler-Direktiven:

{$B+}
{$R- Turn off range checking}
{$I TYPES.INC}
{$M 32768,40960}
{$DEFINE Debug}
{$IFDEF Debug}
{$ENDIF}

Verschiedene Möglichkeiten der Eingabe von Compiler-Direktiven

Hinweis: Im Quellcode eingebettete Direktiven haben Vorrang vor Direktiven, die in der Befehlszeile oder im Dialogfeld Projekt > Optionen > Delphi-Compiler > Compilieren angegeben werden.

Im Quellcode

Sie können Compiler-Direktiven direkt in den Quellcode einfügen.

Hier ist ein Beispiel der bedingten Compilierung aus der Datei Math.pas (im Produktverzeichnis \source):


 procedure DivMod(Dividend: Cardinal; Divisor: Word;
   var Result, Remainder: Word);
 {$IFDEF PUREPASCAL}
 begin
   Result := Dividend div Divisor;
   Remainder := Dividend mod Divisor;
 end;
 {$ELSE !PUREPASCAL}
 {$IFDEF X86ASM}
 asm // StackAlignSafe
         PUSH    EBX
         MOV     EBX,EDX
         MOV     EDX,EAX
         SHR     EDX,16
         DIV     BX
         MOV     EBX,Remainder
         MOV     [ECX],AX
         MOV     [EBX],DX
         POP     EBX
 end;
 {$ENDIF X86ASM}
 {$ENDIF !PUREPASCAL}

Verwenden von Befehlszeilenoptionen

Sie können die Standarddirektiven auch mit dem Schalter -$Direktive mit dem Befehlszeilen-Compiler, dcc32 und in der IDE mit bds.exe ändern.

Beim Befehlszeilen-Compiler können Sie Compiler-Direktiven in der Befehlszeile angeben:

DCC32 -$R+ MYPROG

Verwenden der IDE

Sie können viele der Compiler-Direktiven im Dialogfeld Projekt > Optionen > Delphi-Compiler > Compilieren setzen. Alle Änderungen, die Sie an den Einstellungen auf der Seite Compilieren vornehmen, wirken sich auf alle Units aus, wenn deren Quellcode erneut bei folgenden Compilierungen dieses Projekts compiliert wird. Wenn Sie eine Compiler-Option ändern und compilieren, werden alle Units, für die Quellcode vorhanden ist, mit den neuen Einstellungen erneut compiliert.

Wenn Sie im Quelltext-Editor arbeiten und sich schnell einen Überblick über die aktivierten Compiler-Direktiven verschaffen möchten, drücken Sie Strg+O+O. Die aktuellen Direktiven-Einstellungen werden in einer horizontalen Zeile am Beginn Ihrer Datei zusammen mit anderen aktuellen Einstellungen, wie z.B. Compiler-Warnungen (die Einstellungen für die Direktive $WARN) eingefügt. Diese Listen werden so lange am Beginn Ihrer Quelldatei eingefügt, bis Sie den Befehl rückgängig machen (Strg+Z) oder die Liste manuell löschen:

Directives.png

Siehe auch