¿Hay un equivalente Delphi de la directiva del compilador C# #if (DEBUG)?Delphi #IF (DEBUG) equivalente?
Respuesta
Utilice esta:
{$IFDEF DEBUG}
...
{$ENDIF}
Aparte de lo lassevk dicho, también puede utilizar algunos otros métodos de compilador-evaluación (desde Delphi 6, creo):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}
Para comprobar si el compilador tiene esta característica, use:
{$IFDEF CONDITIONALEXPRESSIONS}
Existen varios usos para esto.
Por ejemplo, puede verificar la versión del RTL; De la ayuda de Delphi:
Se puede utilizar en RTLVersion $ SI expresiones para probar el tiempo de ejecución biblioteca de nivel de versión independiente del nivel de versión del compilador.
Ejemplo: {$ SI RTLVersion> = 16.2} {... $ IfEnd}
Además, la versión del compilador en sí se puede comprobar, de nuevo a partir del código: se asigna
CompilerVersion un valor por compilador cuando la unidad del sistema es compilado. Indica el nivel de revisión del compilador/sintaxis del lenguaje , que puede avanzar independientemente de la RTLVersion. CompilerVersion se puede probar en expresiones $ IF y se debe usar en lugar de probar la definición condicional de VERxxx . Siempre pruebe para mayor o menor que un nivel de revisión conocido. No es buena idea probar para un nivel de revisión específico.
Otra cosa que hago con regularidad, es definir un símbolo cuando no está definido todavía (agradable para visión de compatibilidad), así:
{$IF NOT DECLARED(UTF8String)}
type
UTF8String = type AnsiString;
{$IFEND}
Espero que esto ayude!
Declared(), duh –
@ user205376: Gracias por el ojo agudo, arreglé el error tipográfico. – PatrickvL
Estas directivas de control están disponibles:
{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined
y que pueden ser utilizados 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;
Olvidó {$ IFOPT}, que se puede usar para probar directamente la configuración del compilador. {$ IFOPT D +} // INFORMACIÓN DE DEPÓSITO EN {$ IFOPT C +} // ASERCIONES HABILITADAS etc. – Deltics
DebugHook se establece si una aplicación se ejecuta en 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
- 1. Defines.Debug vs DEBUG #if
- 2. condicional ("Test") + #if DEBUG
- 3. #if DEBUG vs condicional ("Test")
- 4. equivalente C# para Delphi de
- 5. Erlang equivalente a if else
- 6. ¿Está 'desaprobado #IF DEBUG' en la programación moderna?
- 7. Encerrar llamadas a debug() en if isDebugEnabled(): ¿una buena política?
- 8. ¿Debo incluir las llamadas a Debugger.Log() en #if (DEBUG)?
- 9. `if __name__ == '__main __'` equivalente en Ruby
- 10. Delphi - equivalente al método C# DateTime.IsDaylightSavingTime() necesario
- 11. Acceso a Equivalente de LocalApplicationData en Delphi
- 12. Estudio equivalente visual a marcadores Delphi
- 13. lista de acciones Delphi equivalente en C#
- 14. Delphi - ¿Equivalente al operador ternario de C#?
- 15. ¿Hay .NET equivalente a ActionList de Delphi?
- 16. #if No depurar en C#?
- 17. C#/Java "Try/Finally/Catch" construcción equivalente en Delphi
- 18. Delphi - ¿Hay algún equivalente al bloqueo de C#?
- 19. ¿Tiene Delphi algún equivalente a la variable volátil de C?
- 20. if {} en if: endif
- 21. iOS PhoneGap debug Workflow
- 22. ruby-debug and pepino
- 23. XCode Debug Shortcuts
- 24. Visual Studio debug iterators
- 25. Ejecutar Logback en Debug
- 26. PHP Debug Echo's
- 27. C# Debug vs Release
- 28. Django debug toolbar logging
- 29. #define DEBUG 1
- 30. debug JSP from eclipse
Y asegúrese de que las opciones del proyecto definen DEBUG. Creo que solo las nuevas versiones de Delphi (D2007 y superiores?) Lo configuran de forma predeterminada para una compilación de depuración. –
Para versiones anteriores, puede usar {$ IFOPT D +}. 'D' es el símbolo de opción del compilador para "Compilar con información de depuración".'D +' indica que lo que sigue solo debe compilarse si esa opción es * ON *. – Deltics
Para la portabilidad de {$ IFDEF DEBUG} más legible, por supuesto, podría incluir algo como {$ IFOPT C +} {$ DEFINE DEBUG} {$ ENDIF} en un archivo de definición de inclusión estándar (en las secciones relacionadas con las versiones de Delphi que don 't autodefinir DEBUG para usted. Sin embargo, tenga en cuenta que esta "definición automática" no siempre es confiable. DEBUGINFO Creo que se define automáticamente, pero DEBUG solo se define si deja los condicionales predeterminados para la compilación DEBUG tal como están (incluye DEPURAR como una configuración de "fábrica", pero esto puede y puede ser eliminado. Es decir, no es una definición "incorporada" cuando se construye con Info de depuración. – Deltics