Domanda

Esiste un equivalente Delphi della direttiva del compilatore C # #if (DEBUG)?

È stato utile?

Soluzione

Usa questo:

{$IFDEF DEBUG}
...
{$ENDIF}

Altri suggerimenti

A parte ciò che ha detto lassevk, puoi anche usare alcuni altri metodi di valutazione del compilatore (da Delphi 6, credo):

{$IF NOT DECLARED(SOME_SYMBOL)} 
  // Mind you : The NOT above is optional
{$ELSE}
{$IFEND}

Per verificare se il compilatore ha questa funzione, utilizzare:

 {$IFDEF CONDITIONALEXPRESSIONS}

Ci sono diversi usi per questo.

Ad esempio, è possibile verificare la versione di RTL; Dall'aiuto di Delphi:

  

Puoi usare RTLVersion in $ IF   espressioni per testare il runtime   livello di versione della libreria in modo indipendente   del livello di versione del compilatore.
  Esempio: {$ IF RTLVersion > = 16.2} ...   {$ IfEnd}

Inoltre, la stessa versione del compilatore può essere controllata, sempre dal codice:

  

CompilerVersion è assegnato un valore da   il compilatore quando l'unità di sistema è   compilato. Indica la revisione   livello delle funzionalità del compilatore /   sintassi del linguaggio, che può avanzare   indipendentemente dalla versione RTL.   CompilerVersion può essere testato in $ IF   espressioni e dovrebbero essere usate   invece di testare per VERxxx   condizionale definire. Testare sempre per   maggiore o minore di un noto   livello di revisione. È una cattiva idea   test per un livello di revisione specifico.

Un'altra cosa che faccio regolarmente, è definire un simbolo quando non è ancora definito (utile per la compatibilità diretta), come questo:

 {$IF NOT DECLARED(UTF8String)}
 type
   UTF8String = type AnsiString;
 {$IFEND} 

Spero che questo aiuti!

DebugHook è impostato se un'applicazione è in esecuzione con il debugger IDE. Non è la stessa di una direttiva del compilatore ma è comunque abbastanza utile. Ad esempio:

ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging

Queste direttive di controllo sono disponibili:

{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined

e possono essere utilizzati come mostrato qui:

procedure TfrmMain.Button1Click(Sender: TObject);
begin
  {$IFDEF MY_CONDITIONAL}
  ShowMessage('my conditional IS defined!');
  {$ELSE}
  ShowMessage('my conditional is NOT defined!');
  {$ENDIF}

  {$IFNDEF MY_CONDITIONAL}
  ShowMessage('My conditional is explicitly NOT defined');
  {$ENDIF}
end;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top