Domanda

Quando uso direttive Delphi nel codice, come:

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

Dove si assegna la parola 'qualcosa' nel progetto? Ho cercato in alcuni luoghi in Opzioni progetto, ma non ha funzionato. Immagino che non ho trovato quella giusta.

È stato utile?

Soluzione

E 'nel condizionale Definisce slot sotto Progetto | Opzioni, che assomiglia a questo su D2010:

Delphi Opzioni progetto di dialogo

Altri suggerimenti

Altre risposte hai puntato verso i luoghi da definire i simboli e le implicazioni campo di applicazione dei diversi approcci.

Tuttavia, ciò che nessuno ha ancora detto è che se si cambia il definire i simboli che si deve fare una generazione completa del vostro progetto per loro avere alcun effetto sul codice.

Quando si "Compile" il compilatore Delphi solo le unità di compilazione che sono essi stessi modificati dopo l'compilazione precedente. Se si modifica definire i simboli questo non cambia le unità di progetto, quindi, se le unità non sono ri-compilato quindi il cambiamento di definire i simboli non avrà alcun effetto in quelle unità.

Per forzare cambiamenti nel definire i simboli che devono essere applicati in unità di tutto, è necessario "costruire", non la compilazione.

Questo potrebbe spiegare perché il vostro tentativo di definisce set non sembra lavoro precedentemente

È anche possibile definirli in {$ DEFINE simbolo <>} direttive. Ciò che cambia è la portata. Quando si definisce una sotto definisce condizionali nelle opzioni di progetto, la portata è globale per l'intero progetto. $ DEFINIRE direttive sono validi solo dal punto in cui sono dichiarate alla fine del modulo corrente, o fino a quando una direttiva $ UNDEF usando lo stesso simbolo <> si incontra. Cosa usare dipende dalle vostre esigenze, e ciò che l'IFDEF fa.

Ci sono due posti dove si può mettere definisce condizionali che vengono utilizzati in tutte le unità di un progetto:

  1. nelle opzioni di progetto (come David Heffernan già detto)
  2. in un file di inclusione che è incluso in tutti di queste unità

Perché ho citato la seconda opzione? Perché permette specializzata elaborazione basati sul VERxxx condizionale definire e altre definisce condizionali fornite in 1. Vedere jedi.inc (dal Jedi JCL) per un esempio.

Inoltre, come detto Deltics: Quando si determina quale unità ricompilare, il compilatore controlla solo se l'unità stessa è cambiata, non se le definisce condizionale o qualsiasi file include sono cambiati. Quindi, se si cambia definisce condizionali, è necessario eseguire una ricostruzione, non solo una ricompilazione. Dal momento che il compilatore Delphi è molto veloce, questo per fortuna non fa molta differenza per tempi di compilazione.

Si possono definire simboli globali nel file esterno con estensione .inc. Creare un nuovo file di testo, mettere in esso tutto ciò che definisce e salvarlo come per esempio Predefines.inc:

--- contenuto del file Predefines.inc ---

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

In te Delphi moduli, in cui è necessario controllare sono i simboli definiti, inserire questo codice nella sezione interfaccia:

interface

{$I Predefines.inc}

uses ...

// Check you defines

{$IFDEF Symbol}
...
{$ENDIF}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top