Pregunta

¿Existe un equivalente de Delphi de la directiva del compilador C # #if (DEBUG)?

¿Fue útil?

Solución

Use esto:

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

Otros consejos

Además de lo que dijo lassevk, también puede usar algunos otros métodos de evaluación del compilador (desde Delphi 6, creo):

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

Para verificar si el compilador tiene esta característica, use:

 {$IFDEF CONDITIONALEXPRESSIONS}

Hay varios usos para esto.

Por ejemplo, puede verificar la versión del RTL; De la ayuda de Delphi:

  

Puede usar RTLVersion en $ IF   Expresiones para probar el tiempo de ejecución.   nivel de versión de la biblioteca de forma independiente   del nivel de versión del compilador.
  Ejemplo: {$ IF RTLVersion > = 16.2} ...   {$ IFEND}

También, la propia versión del compilador se puede verificar, nuevamente desde el código:

  

CompilerVersion se le asigna un valor por   el compilador cuando la unidad del sistema es   compilado Indica la revisión.   nivel de las características del compilador /   sintaxis del lenguaje, que puede avanzar   independientemente de la RTLVersion.   CompilerVersion se puede probar en $ IF   expresiones y deben ser utilizadas   En lugar de probar el VERxxx   condicional definir. Siempre prueba para   mayor que o menor que un conocido   nivel de revisión. Es una mala idea   prueba para un nivel de revisión específico.

Otra cosa que hago regularmente es definir un símbolo cuando aún no está definido (bueno para la compatibilidad de reenvío), así:

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

¡Espero que esto ayude!

DebugHook se establece si una aplicación se ejecuta bajo el depurador IDE. No es lo mismo que una directiva de compilación, pero sigue siendo bastante útil. Por ejemplo:

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

Estas directivas de control están disponibles:

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

y se pueden usar como se muestra aquí:

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top