Delphi #IF (DEBUG) equivalente?
-
02-07-2019 - |
Pergunta
Existe um equivalente Delphi do C # # if (debug) diretiva de compilação?
Solução
Use esta:
{$IFDEF DEBUG}
...
{$ENDIF}
Outras dicas
Além do que lassevk disse, você também pode usar alguns outros métodos de compilador-avaliação (desde Delphi 6, creio eu):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}
Para verificar se o compilador tem esse recurso, use:
{$IFDEF CONDITIONALEXPRESSIONS}
Há vários usos para isso.
Por exemplo, você pode verificar a versão do RTL; Desde a ajuda Delphi:
Você pode usar RTLVersion em $ IF expressões para testar o tempo de execução nível de versão da biblioteca de forma independente do nível de versão do compilador.
Exemplo: {$ IF RTLVersion> = 16,2} ... {$ IfEnd}
Além disso, a própria versão do compilador pode ser verificado, novamente a partir do código:
CompilerVersion é atribuído um valor por o compilador, quando a unidade de sistema é compilado. Ele indica a revisão nível das características do compilador / sintaxe da linguagem, que pode avançar independentemente do RTLVersion. CompilerVersion pode ser testado em $ IF expressões e deve ser usado em vez de testar para a VERxxx condicional definir. Sempre teste para maior do que ou menor do que um conhecido Nível de revisão. É uma má ideia teste para um nível de revisão específica.
Outra coisa que faço regularmente, é definir um símbolo quando não está definido ainda (bom para a frente-compatibilidade), assim:
{$IF NOT DECLARED(UTF8String)}
type
UTF8String = type AnsiString;
{$IFEND}
Espero que isso ajude!
DebugHook está definido se um aplicativo está sendo executado sob o depurador IDE. Não é o mesmo que uma diretiva de compilação, mas ainda bastante útil. Por exemplo:
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging
Estas directivas de controle estão disponíveis:
{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined
e eles podem ser usados ??como mostrado aqui:
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;