¿Delphi #IF (DEBUG) equivalente?
-
02-07-2019 - |
Pregunta
¿Existe un equivalente de Delphi de la directiva del compilador C # #if (DEBUG)?
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;