Frage

Wenn ich Delphi -Direktiven in Code verwende, wie:

{$IFDEF something}
.
.
.
{$ENDIF}

Wo habe ich das Wort 'etwas' im Projekt zu. Ich habe an einigen Stellen in Projektoptionen versucht, aber es hat nicht funktioniert. Ich schätze, ich habe nicht den richtigen gefunden.

War es hilfreich?

Lösung

Es ist in Bedingte Definierungen Slot unter Projekt | Optionen, die auf D2010 so aussehen:

Delphi Project Options dialog

Andere Tipps

Andere Antworten haben Sie auf die Orte hingewiesen, um Symbole und die Auswirkungen der verschiedenen Ansätze zu definieren.

Was noch niemand erwähnt hat, ist, dass Sie, wenn Sie die definierten Symbole ändern, einen vollständigen Aufbau Ihres Projekts durchführen müssen, damit sie einen Einfluss auf Ihren Code haben.

Wenn Sie "kompilieren" "kompilieren", kompiliert der Delphi -Compiler nur Einheiten, die sich seit dem vorherigen Kompilieren geändert haben. Wenn Sie Symbole definieren, ändert sich keine Projekteinheiten. Wenn also die Einheiten nicht neu kompiliert werden, hat die Änderung der definierten Symbole keinen Einfluss in diesen Einheiten.

Um Änderungen der definierten Symbole zu erzwingen, die in allen Einheiten angewendet werden sollen, müssen Sie "bauen", nicht kompilieren.

Dies könnte erklären, warum Ihr Definiertes Versuch, Defines zu setzen

Sie können sie auch in {$ define definierenu003Csymbol> } Richtlinien. Was sich ändert, ist der Umfang. Wenn Sie a definierenu003Csymbol> Unter bedingten Definierungen in den Projektoptionen ist der Umfang global für das gesamte Projekt. $ Define -Richtlinien sind nur ab dem Zeitpunkt gültig, an dem sie bis zum Ende des aktuellen Moduls deklariert werden, oder bis eine $ undef -Richtlinie mit derselbenu003Csymbol> wird angetroffen. Was zu verwenden ist, hängt von Ihren Bedürfnissen ab und was der IFDEF tut.

Es gibt zwei Orte, an denen Sie bedingte Definiert einstellen können, die in allen Einheiten eines Projekts verwendet werden:

  1. in den Projektoptionen (wie David Heffernan bereits sagte)
  2. in einer inklusiven Datei, die in enthalten ist alle dieser Einheiten

Warum erwähne ich die zweite Option? Da es eine spezielle Verarbeitung ermöglicht, die auf der Verxxx -Bedingung definiert und andere bedingte Definitionen in 1 angegeben sind. Siehe Jedi.inc (von der Jedi JCL) für ein Beispiel.

Wie die Deltics sagte: Wenn sie feststellt, welche Einheiten neu kompilieren sollen, prüft der Compiler nur, ob sich das Gerät selbst geändert hat, und nicht, ob sich die bedingten Definierungen oder in Einschlussdateien geändert haben. Wenn Sie also die bedingten Definierungen ändern, müssen Sie einen Wiederaufbau machen, nicht nur einen Neukompilieren. Da der Delphi -Compiler sehr schnell ist, macht dies zum Glück keinen großen Unterschied für die Kompilierzeiten.

Sie können globale Symbole in der externen Datei mit .inc -Erweiterung definieren. Erstellen Sie eine neue Textdatei, geben Sie alles ein, was Sie definieren, und speichern Sie sie wie zum Beispiel vordefiniert.inc:

--- Inhalt der Datei vordefiniert.inc ---

{$DEFINE Symbol}
{$IFDEF Symbol}
  {$DEFINE AnotherSymbol}
{$ENDIF}

In Ihren Delphi -Modulen, bei denen Sie überprüft werden müssen, ob Sie Symbole definiert sind, setzen Sie diesen Code in den Schnittstellenabschnitt:

interface

{$I Predefines.inc}

uses ...

// Check you defines

{$IFDEF Symbol}
...
{$ENDIF}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top