Compilieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Delphi-Compiler

Projekt > Optionen > Erzeugen > Delphi-Compiler > Compilieren

Auf dieser Seite legen Sie die Compiler-Optionen für das aktuelle Projekt fest.

Hinweis: Nicht alle der hier beschriebenen Optionen stehen für alle Projekttypen zur Verfügung. Zum Beispiel ist die Option DCP-Ausgabeverzeichnis nicht für C++-Projekte verfügbar.
Optionen Beschreibung

Ziel, Übernehmen, Speichern

Siehe Optionen für das Ziel.

Gemeinsame Elemente

Siehe Gemeinsame Elemente auf den Projektoptionsseiten.

Optionen für die Quelltexterzeugung

Element Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben)

Steuerung des Code-Inlining

Setzt oder entfernt die Delphi-Compiler-Direktive {$INLINE <ON|OFF|AUTO>}. Weitere Informationen finden Sie unter "Die Direktive Inline" in Prozeduren und Funktionen aufrufen (Delphi). Vorgabe = Aus

‑‑inline

Codeseite

Geben Sie die Codeseite für die Sprache der Anwendung ein (z. B. 1252). Die Codeseite wird als Dezimalzahl angegeben, die eine bestimmte Zeichencodierungstabelle bezeichnet. Es gibt Standardwerte für zahlreiche Sprachen. Vorgabe = 0

‑‑codepage

Laufzeittypinformationen ausgeben

Steuert die Erzeugung von Laufzeittypinformationen. Der Vorgabewert ist False (es werden keine Laufzeittypinformationen ausgegeben). Vorgabe = False

‑$M+
‑$M‑

Mindestgröße für Enum

Legt die Mindestgröße des Arbeitsspeichers fest, der für ein Enum zugewiesen wird. Byte {$Z1}, Word {$Z2} und Double Word {$Z4} sind möglich. Die Popup-Schaltfläche Pfeil nach unten ist unter Gemeinsame Elemente auf den Projektoptionsseiten beschrieben. Vorgabe = Byte

‑$Z1
‑$Z2
‑$Z4

Optimierung

Steuert die Codeoptimierung. Wenn diese Option aktiviert ist (entspricht {$O+}), führt der Compiler eine Reihe von Codeoptimierungen durch, wie z. B. Variablen in CPU-Register setzen, allgemeine Unterausdrücke entfernen und Induktionsvariablen erzeugen. Bei deaktivierter Option (entspricht {$O-}) werden diese Optimierungen nicht ausgeführt. Außer in bestimmten Testsituationen sollte die Codeoptimierung immer aktiviert sein. Die Optimierungen des Delphi-Compilers führen zu keinerlei Änderungen der Funktionsweise des Programms. Der Compiler führt also keine "unsicheren" Optimierungen durch, die die besondere Aufmerksamkeit des Programmierers erfordern. Mit dieser Option können Optimierungen nur für eine gesamte Prozedur oder Funktion aktiviert oder deaktiviert werden. Dies ist nicht für bestimmte Zeilen innerhalb einer Routine möglich. Vorgabe = False

‑$O+
‑$O‑

Record-Felder ausrichten

Steuert die Ausrichtung von Feldern in Record-Typen und Klassenstrukturen von Delphi. Klicken Sie auf den nach unten weisenden Pfeil, um einen Wert auszuwählen:

  • Wenn Sie die Option Aus (entspricht {$A1}) wählen oder die Option deaktivieren (entspricht {$A-}), werden Felder nicht ausgerichtet. Alle Records und Klassenstrukturen werden gepackt.
  • Wenn Sie die Option Byte (entspricht {$A2}) wählen, werden die ohne den Bezeichner "packed" deklarierten Felder in Record-Typen und die Felder in Klassenstrukturen an Byte-Grenzen ausgerichtet.
  • Wenn Sie die Option Word (entspricht {$A2}) wählen, werden die ohne den Bezeichner "packed" deklarierten Felder in Record-Typen und die Felder in Klassenstrukturen an Word-Grenzen ausgerichtet.
  • Wenn Sie die Option Double Word (entspricht {$A4}) wählen, werden die ohne den Bezeichner "packed" deklarierten Felder in Record-Typen und die Felder in Klassenstrukturen an Double Word-Grenzen ausgerichtet.
  • Wenn Sie die Option Quad Word (entspricht {$A8} oder {$A+}) wählen, werden die ohne den Bezeichner "packed" deklarierten Felder in Record-Typen und die Felder in Klassenstrukturen an Quad Word-Grenzen ausgerichtet.

Variablen und typisierte Konstanten werden unabhängig von der Direktive $A immer für einen optimalen Zugriff ausgerichtet. Die Ausführung ist schneller, wenn Sie die Option auf 8 (Quad Word) setzen.
Dies ist die Vorgabe.

‑$A‑
‑$A1
‑$A2
‑$A4
‑$A8
‑$A+

Stack-Frames

Steuert die Erzeugung von Stack-Frames für Prozeduren und Funktionen. Wenn die Option aktiviert ist (entspricht {$W+}), werden Stack-Frames für Prozeduren und Funktionen auch dann erzeugt, wenn sie nicht benötigt werden. Bei deaktivierter Option (entspricht {$W-}), werden Stack-Frames nur generiert, wenn die Verwendung lokaler Variablen durch die Routine dies erfordert. Normalerweise wird der Status {$W+} nur für bestimmte Debugger-Tools benötigt, die eine Erzeugung von Stack-Frames für alle Prozeduren und Funktionen verlangen.
Vorgabe = True

‑$W+
‑$W‑

  • 32‑Bit-Windows
  • 64‑Bit-Windows
  • macOS 

Optionen für das Debuggen

Element Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben)

Assertion

Aktiviert oder deaktiviert die Erzeugung von Assertion-Code in einer Delphi-Quelltextdatei. Die Option ist standardmäßig aktiviert (entspricht {$C+}). Da in Auslieferungsversionen eines Produkts normalerweise zur Laufzeit keine Assertions verwendet werden, sind Compiler-Direktiven vorhanden, die die Erzeugung von Code für Assertions deaktivieren. Deaktivieren Sie diese Option, um Assertions zu deaktivieren.

‑$C+
‑$C‑

Debug-Informationen

Debug-Informationen enthalten für jede Prozedur eine Tabelle mit Zeilennummern, in der Adressen des Objektcodes als Zeilennummern im Quelltext dargestellt werden. Bei Units werden die Debug-Informationen in der Unit-Datei gemeinsam mit dem Objektcode der Unit aufgezeichnet. Durch die Debug-Informationen erhöht sich die Größe der Unit-Datei. Das Compilieren von Programmen, die diese Unit verwenden, erfordert deshalb mehr Speicher. Die Größe und die Ausführungsgeschwindigkeit des ausführbaren Programms werden aber nicht nachteilig beeinflusst. Wenn ein Programm oder eine Unit mit dieser Option (entspricht {$D+}) compiliert wird, können Sie das betreffende Modul mit dem integrierten Debugger in Einzelschritten testen und Haltepunkte setzen. Mit den Optionen Debug-Informationen in separate TDS-Datei ausgeben und Map-Datei (auf der Seite Linken des Dialogfelds Projektoptionen) können nur vollständige Zeileninformationen für Module erzeugt werden, die mit der aktivierter Option compiliert wurden. Diese Option wird normalerweise zusammen mit der Option Lokale Symbole (Schalter {$L}) eingesetzt, die die Erzeugung von lokalen Symbolinformationen für das Debugging steuert.

‑V ‑VN

Lokale Symbole

Aktiviert oder deaktiviert die Erzeugung von Symbolinformationen. Klicken Sie auf den nach unten weisenden Pfeil, um einen Wert (True, False) auszuwählen. Lokale Symbolinformationen sind die Namen und Typen aller lokalen Variablen und Konstanten eines Moduls, also die Symbole im implementation-Abschnitt des Moduls und in seinen Prozeduren und Funktionen. Bei Units werden die lokalen Symbolinformationen zusammen mit dem Objektcode in der Unit-Datei gespeichert. Lokale Symbolinformationen vergrößern eine Unit-Datei. Das Compilieren von Programmen, die diese Unit verwenden, erfordert also mehr Speicher. Die Größe und die Ausführungsgeschwindigkeit der Programme werden aber nicht nachteilig beeinflusst. Wenn ein Programm oder eine Unit mit dieser Option (entspricht {$L+}) compiliert wird, können Sie die lokalen Variablen des Moduls im integrierten Debugger überprüfen und ändern. Außerdem können die Aufrufe von Prozeduren und Funktionen des Moduls über die Option Ansicht > Debug-Fenster > Aufruf-Stack überprüft werden. Mit den Optionen Debug-Informationen in separate TDS-Datei ausgeben und Map-Datei (auf der Seite Linken des Dialogfelds Projektoptionen) können nur lokale Symbolinformationen für Module erzeugt werden, die mit der aktivierter Option compiliert wurden. Diese Option wird normalerweise zusammen mit der Option Debug-Informationen eingesetzt, die die Erzeugung von Tabellen mit Zeilennummern zu Testzwecken steuert. Diese Option wird ignoriert, wenn die Option Debug-Informationen für den Compiler deaktiviert ist.

‑$L+
‑$L‑

Symbolreferenzinfo

Erzeugt für den Quelltext- Editor und die Projektverwaltung Informationen zu Symbolreferenzen. Entspricht der Delphi-Compiler-Direktive {$Y}.

  • Wenn Keine ({$Y-}) ausgewählt ist, werden keine Symbolreferenzinformationen aufgezeichnet.
  • Wenn Nur Definitionen aktiviert ist ({$YD}), zeichnet der Compiler Informationen darüber auf, wo die Bezeichner definiert sind.
  • Ist Referenzinfo aktiviert ({$Y+}), werden Informationen darüber aufgezeichnet, wo die Bezeichner definiert sind und verwendet werden.

Diese Option ist nur wirksam, wenn Debug-Informationen und Lokale Symbole (siehe oben) aktiviert sind. Die Programmierhilfe und die Navigation durch Quelltext (Strg+Klick) arbeiten nur, wenn Symbolreferenzinfo auf Referenzinfo gesetzt ist.

‑$Y+
‑$YD
‑$Y‑

Mit Debug-DCUs

Die DCU-Dateien enthalten Debug-Informationen und werden mit Stack-Frames erzeugt. Ist diese Option aktiviert, fügt der Compiler automatisch den im Feld Quellpfad für Debugger auf der Seite Embarcadero-Debugger angegebenen Suchpfaden den Debug-DCU-Pfad hinzu.

Importierte Datenreferenzen verwenden

Aktiviert gepackte Units zum Referenzieren von Variablen in anderen Packages. Entspricht der Delphi-Compiler-Direktive {$G}.

‑$G+
‑$G‑

  • 32‑Bit-Windows
  • 64‑Bit-Windows
  • macOS 

Weitere Optionen

Element Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben)

Weitere Optionen für die Übergabe an den Compiler

Geben Sie Compiler-Optionen ein, die Sie den Einstellungen hinzufügen möchten, die vom Dialogfeld "Projekt > Optionen" gesteuert werden. Verwenden Sie als Optionssymbol einen Bindestrich, und trennen Sie die Optionen durch Komma.

Programmierhilfe prüft in uses-Klausel auch .dcus

Die Programmierhilfe (STRG+LEER) ist eine Code Insight-Funktion, die im Quelltext-Editor zur Verfügung steht. Damit können Sie Ihren Code vervollständigen.

Hinweis: Die Funktion arbeitet auch mit .pas- und .dcu-Dateien. Diese Funktion kann in den Projektoptionen auf Plattformebene deaktiviert werden.

Es sind zwei Modi verfügbar, wenn Sie Programmierhilfe in einem uses-Abschnitt anfordern:

  • Modus 1: Units auflisten, für die sich nur die entsprechende .pas-Datei im Suchpfad befindet.
  • Modus 2: Units auflisten, für die sich nur die .dcu-Datei im Suchpfad befindet. Dies ist möglicherweise bei Bibliotheken von Fremdherstellern der Fall.

Wenn Sie die Option "Programmierhilfe prüft in uses-Klausel auch .dcus" deaktivieren, wechseln Sie in den Modus 1. Das ist in Umgebungen hilfreich, in denen der Suchpfad Verzeichnisse mit einer Vielzahl DCUs enthält, die mit der aktuellen Plattform inkompatibel sind. Zum Beispiel: Sie entwickeln eine App für Win32 und MacOS. Auf beiden Plattformen enthält der Suchpfad viele Verzeichnisse, die Win32-DCUs enthalten. Wenn Ihre aktuelle Plattform MacOS ist, fordern Sie Programmierhilfe für "uses" an. Um dann keine Win32-Units anzuzeigen, deaktivieren Sie das Vorschlagen von DCUs unter MacOS.

Unsicheren Code zulassen

Der Begriff "unsicher" stammt aus .NET, wo "unsicher" "nicht verwaltet" bedeutet, das heißt, Code, der direkt auf den Arbeitsspeicher anstatt über "verwalteten" Code und "verwaltete" Datenstrukturen zugreift. "Verwalteter" Code und "verwaltete" Datenstrukturen in der .NET-Umgebung verursachen höchstwahrscheinlich keine Speicherfehler oder Ressourcenlecks. Da Assembly-Anweisungen weder typisiert noch "verwaltet" sind und fast immer direkt auf den Arbeitsspeicher zugreifen, werden sie von den .NET-Standards ausnahmslos als "unsicher" angesehen. Selbstverständlich ist Assembly-Code sicher, wenn er korrekt geschrieben ist. In Delphi gibt es drei Warnungen zu unsicherem Code, damit Code leichter von Win32 und .NET gemeinsam genutzt werden kann. Wenn Meldungen zu unsicherem Code für Sie nicht relevant sind, können Sie die Warnungen auf der Seite Hinweise und Warnungen des Dialogfelds "Projektoptionen" deaktivieren. Einzelheiten finden Sie unter:

‑P

  • macOS 

XML-Dokumentation erzeugen

Erzeugt eine Datei, die die XML-Repräsentation in Ihrem Projektverzeichnis enthält. Weitere Informationen finden Sie unter XML-Dokumentation für Delphi-Code.
Vorgabe = False

‑‑doc

Auch nach 8.3-Dateinamen suchen

Übergibt die Compiler-Option -P für DCC32.exe oder DCC64.exe. Vorgabe = False Ermöglicht die Verwendung von DOS-Dateinamen im alten Stil, die im Format Dateiname.ext vorliegen. Dateiname kann 1 bis 8 Zeichen lang sein. Unterstützt auf 32-Bit- und 64-Bit-Windows-Plattformen.

‑P

  • 32‑Bit-Windows
  • 64‑Bit-Windows

Unit-Abhängigkeitsinformationen ausgeben

Übergibt die Compiler-Option -depends für DCC32.exe. Vorgabe = False Bewirkt, dass die Delphi-Befehlszeilen-Compiler eine Textdatei mit der Erweiterung ".d" generieren. Die generierten ".d"-Dateien enthalten alle .dcus, Unit-Dateinamen für das Projekt (und alle Abhängigkeiten), einschließlich der Pfadnamen.

Hinweis: Diese Option ist nur für den Befehlszeilen-Compiler anwendbar. Um eine Abhängigkeit für ein Projekt in der IDE zu erzeugen, ist es erforderlich, "MSBuild extern für die Compilierung verwenden" auf true festzulegen.

‑‑depends

$IF muss mit $IFEND abgeschlossen werden

Ermöglicht die Verwendung von $IFEND (anstatt des korrekten $ENDIF), um eine $IF-Klausel abzuschließen. Wenn diese Option nicht aktiviert ist, geben die Compiler eventuell den Fehler E2029 aus. Siehe die Compiler-Direktive LEGACYIFEND (Delphi). Vorgabe = False

‑‑legacy-ifend

Ausgabeverzeichnis für XML-Dokumentation

Gibt den Ordner an, in dem die XML-Dokumentation für das Projekt erzeugt wird. Siehe die Option XML-Dokumentation erzeugen weiter oben.

‑NX

Anwendungspakets für Android 32 Bit und 64 Bit (armeabi-v7a + arm64-v8a) generieren

Der Compiler erstellt ein Anwendungspaket, das sowohl 32-Bit- als auch 64-Bit-Android-Binärdateien enthält. Vorgabe = False (nur eine 64-Bit-Binärdatei wird erstellt).

  • 64‑Bit-Android 

Universelle macOS-Binärdatei generieren (x86_64 + arm64)

Der Compiler erstellt eine universelle Binärdatei für sowohl 64-Bit-Intel.macOS als auch 64-Bit-ARM-macOS. Vorgabe = False (nur eine 64-Bit-ARM-Binärdatei wird erstellt).

  • macOS ARM 64 Bit 

Optionen für Laufzeitfehler

Element Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben)

E/A-Prüfung

Aktiviert oder deaktiviert die automatische Code-Erzeugung, die nach jedem Aufruf einer E/A-Prozedur das Ergebnis überprüft. Wenn eine E/A-Prozedur bei aktivierter Option ein Ergebnis ungleich 0 zurückgibt, führt dies zu einer EInOutError-Exception (bzw. zum Programmabbruch, wenn die Exception-Behandlung nicht aktiviert ist). Ist die Option deaktiviert, muss die E/A-Operation durch einen Aufruf von IOResult auf Fehler geprüft werden.
Vorgabe = True

‑$I+
‑$I‑

Überlaufprüfung

Steuert die Erzeugung von Code für die Überlaufprüfung. Wenn die Option aktiviert ist (entspricht {$Q+}), werden bestimmte arithmetische Integer-Operationen (+, -, *, Abs, Sqr, Succ, Pred, Inc und Dec) auf einen Überlauf geprüft. Dazu wird ihnen zusätzlicher Code hinzugefügt, der sicherstellt, dass das Ergebnis innerhalb des unterstützten Bereichs liegt. Das Fehlschlagen der Überlaufprüfung führt zu einer EIntOverflow-Exception (bzw. zum Programmabbruch, wenn die Exception-Behandlung nicht aktiviert ist). Diese Option wird normalerweise zusammen mit der Option zur Bereichsüberprüfung ({$R}) eingesetzt, die die Erzeugung von Bereichsprüfungscode aktiviert bzw. deaktiviert. Die Aktivierung der Überlaufsprüfung vergrößert und verlangsamt Programme. Vorgabe = True

Hinweis: Das Festlegen dieser Option auf true kann möglicherweise beim Debuggen einen Leistungsabfall verursachen.

‑$Q+
‑$Q‑

Bereichsüberprüfung

Aktiviert oder deaktiviert die Erzeugung von Bereichsprüfungscode. Wenn die Option aktiviert ist (entspricht {$R+}), werden alle Ausdrücke, die Arrays und Strings indizieren, dahingehend überprüft, ob sie sich innerhalb der festgelegten Grenzen befinden. Der gleichen Prüfung werden alle Zuweisungen an skalare Variablen und Teilbereichsvariablen unterzogen. Das Fehlschlagen der Bereichsprüfung führt zu einer ERangeError-Exception (bzw. zum Programmabbruch, wenn die Exception-Behandlung nicht aktiviert ist). Die Aktivierung der Bereichsprüfung vergrößert und verlangsamt Programme. Vorgabe = True

Hinweis: Das Festlegen dieser Option auf true kann möglicherweise beim Debuggen einen Leistungsabfall verursachen.

‑$R+
‑$R‑

Optionen für die Syntax

Element Beschreibung Compiler-Optionen Alle Plattformen werden unterstützt (sofern nicht anders angegeben)

Zuweisbare typisierte Konstanten

Legt fest, ob typisierte Konstanten geändert werden können. Wenn die Option aktiviert ist (entspricht {$J+}), ist eine Änderung möglich. Typisierte Konstanten sind in diesem Fall mit initialisierten Variablen vergleichbar. Bei deaktivierter Option (entspricht {$J-}) sind typisierte Konstanten tatsächlich konstant. Jeder Versuch, sie zu ändern, führt zu einer Fehlermeldung des Compilers. Als schreibbar werden typisierte Konstanten bezeichnet, die zur Laufzeit als Variablen verwendet und somit geändert werden können. Deshalb muss älterer Quelltext, der änderbare typisierte Konstanten enthält, mit aktivierter Option compiliert werden, während für neue Anwendungen initialisierte Variablen verwendet werden sollten und der Quelltext mit deaktivierter Option compiliert werden sollte. Vorgabe = False

‑$J+
‑$J‑

Vollständige Boolesche Auswertung

Schaltet zwischen zwei unterschiedlichen Modellen der Delphi-Quelltexterzeugung für die booleschen Operatoren AND und OR um. Wenn die Option aktiviert ist (entspricht {$B+}), erzeugt der Compiler Code für die vollständige Auswertung eines booleschen Ausdrucks. Das bedeutet, dass jeder Operand eines booleschen Ausdrucks, der mit den Operatoren AND und OR gebildet wird, garantiert ausgewertet wird, auch wenn das Ergebnis des gesamten Ausdrucks bereits feststeht. Bei deaktivierter Option (entspricht {$B-}) generiert der Compiler Code für die Kurzschlussauswertung boolescher Ausdrücke, d. h. die Auswertung wird beendet, sobald das Ergebnis des gesamten Ausdrucks feststeht (die Auswertung erfolgt immer von links nach rechts). Vorgabe = False

‑$B+
‑$B‑

Erweiterte Syntax

Dient nur der Abwärtskompatibilität. Verwenden Sie diese Option (entspricht {$X-}) nicht in Ihren Delphi-Anwendungen. Mit dieser Option wird die erweiterte Syntax von Delphi aktiviert oder deaktiviert: Funktionsanweisungen. Im Modus {$X+} können Funktionsaufrufe als Prozedurenaufrufe verwendet werden, d. h. das Ergebnis eines Funktionsaufrufs kann ignoriert werden, anstatt an eine andere Funktion übergeben oder in einer Operation bzw. Zuweisung verwendet zu werden. Im Allgemeinen werden die von einer Funktion ausgeführten Berechnungen durch das Funktionsergebnis repräsentiert, das nicht ignoriert werden sollte. Manchmal führen Funktionen aber lediglich eine bestimmte Operation durch (z. B. einer globalen Variablen einen Wert zuweisen) und geben keinen Wert zurück, der weiterverwendet werden kann. Result-Variable. Wenn die Option aktiviert ist (entspricht {$X+}), kann die vordefinierte Result-Variable für den Rückgabewert der Funktion verwendet werden. Nullterminierte Strings. Wenn diese Option aktiviert ist, können Delphi-Strings nullbasierten Zeichen-Arrays (array[0..X] of Char) zugewiesen werden, die mit PChar-Typen kompatibel sind. Vorgabe = True

‑$X+
‑$X‑

Standardmäßig lange Strings

Diese Option (entspricht der Direktive {$H}) legt fest, welche Bedeutung das reservierte Wort string hat, wenn es ohne Zusatz in einer Typdeklaration steht. Der generische Typ string kann entweder einen langen, dynamisch zugewiesenen String (fundamentaler Typ UnicodeString) oder einen kurzen, statisch zugewiesenen String (fundamentaler Typ ShortString) darstellen. Durch die Standardeinstellung in Delphi wird der generische String-Typ als langer UnicodeString definiert. Alle Objekte in der Komponentenbibliothek werden in diesem Status compiliert. Für neue Komponenten sollten ebenfalls lange Strings verwendet werden. Dasselbe gilt für Quelltext, der Daten aus String-Eigenschaften der Komponentenbibliothek übernimmt. Die deaktivierte Option (entspricht {$H-}) ist sinnvoll, wenn auf Quelltext aus älteren Versionen von Delphi zugegriffen wird, in dem standardmäßig kurze Strings verwendet werden. Die Bedeutung von String-Typdefinitionen kann lokal überschrieben werden, um die Erzeugung kurzer Strings sicherzustellen. Außerdem können kurze String-Typen als string[255] oder ShortString deklariert werden. Diese Typen sind eindeutig und von der aktivierten Option unabhängig. Vorgabe = True

‑$H+
‑$H‑

  • 32‑Bit-Windows
  • 64‑Bit-Windows
  • macOS 

Offene Parameter

Ist nur für Quelltext von Bedeutung, der mit Huge-Strings compiliert wurde. Diese Option dient der Abwärtskompatibilität mit früheren Versionen von Delphi und Object Pascal. Diese Option (entspricht der Direktive {$P}) legt die Bedeutung von Variablenparametern fest, die mit dem Schlüsselwort "string" im Status {$H-} (Huge-Strings deaktiviert) deklariert wurden. Bei deaktivierter Option (entspricht {$P-}) sind mit dem Schlüsselwort "string" deklarierte Variablenparameter normale Variablenparameter. Dagegen werden sie im Status {$P+} als offene String-Parameter behandelt. Der Bezeichner "OpenString" kann unabhängig von der Einstellung der Direktive $P immer zur Deklaration von offenen String-Parametern verwendet werden. Vorgabe = True

‑$P+
‑$P‑

Strenge VAR-Strings-Prüfung

Diese Option (entspricht der Direktive {$V}) ist nur für Delphi-Quelltext von Bedeutung, in dem kurze Strings verwendet werden. Sie dient der Abwärtskompatibilität mit früheren Versionen von Delphi und Object Pascal. Die Option steuert den Typ für kurze Strings, die als Variablenparameter übergeben werden. Wenn die Option aktiviert ist (entspricht {$V+}), wird eine strenge Typprüfung durchgeführt, d. h. formale und tatsächliche Parameter müssen denselben String-Typ haben. Bei deaktivierter Option (entspricht {$V-}) kann eine Variable eines kurzen String-Typs selbst dann als Parameter verwendet werden, wenn die deklarierte Maximallänge nicht mit der des formalen Parameters übereinstimmt. Vorgabe = True

‑$V+
‑$V‑

Typisierter @-Operator

Steuert die vom Operator @ generierten Zeigertypen und deren Kompatibilität. Bei deaktivierter Option (entspricht {$T-}) ist das Ergebnis des Operators @ immer ein Zeiger ohne Typ (Pointer), der mit allen übrigen Zeigertypen kompatibel ist. Wenn @ für einen Variablenverweis (entspricht {$T+}) verwendet wird, ist das Ergebnis ein typisierter Zeiger, der nur mit Pointer und anderen Zeigern auf den Variablentyp kompatibel ist. Bei deaktivierter Option sind bestimmte Zeigertypen (keine Pointer-Typen) nicht kompatibel (auch wenn sie Zeiger auf denselben Typ sind). Bei aktivierter Option sind Zeiger auf denselben Typ kompatibel. Vorgabe = False

‑$T+
‑$T‑


Tipp: Wenn bei der Compilierung eines Projekts die Compiler-Optionen im Fenster Meldungen angezeigt werden sollen, wählen Sie Tools > Optionen > IDE > Compilierung und Ausführung und aktivieren die Option Befehlszeile anzeigen. Beim nächsten Compilieren eines Projekts werden der Befehl, der zur Compilierung des Projekts verwendet wurde, und die Antwortdatei im Fenster Meldungen angezeigt. In der Antwortdatei sind die Compiler-Optionen und die zu compilierenden Dateien aufgeführt.


Achtung: RAD Studio überprüft den Arbeitsspeicherplatz, den der IDE-Compiler belegt. Wenn dieser 60 % des gesamten, verfügbaren Arbeitsspeichers übersteigt, leert der Compiler den Unit-Zwischenspeicher. Standardmäßig sind 60 % festgelegt, aber auf bestimmten Systemen ist dieser Prozentsatz zu hoch und verursacht, dass die IDE abstürzt oder einfriert.

In der Registrierungseinstellung können Sie den Grenzwert von 60 % wie folgt ändern:

  1. Schließen Sie die IDE.
  2. Führen Sie "regedit" aus, und suchen Sie den folgenden Schlüssel: HKEY_CURRENT_USER\Software\Embarcadero\BDS\22.0\Compiling
  3. Erstellen Sie einen neuen DWORD-Wert mit dem Namen ProcMemAllocLimit, und legen Sie den Wert auf 50 (dezimal) fest.
  4. Beenden Sie "regedit".
  5. Starten Sie die IDE.

Siehe auch