Delphi #IF(DEBUG) equivalent?

后端 未结 4 1759
轮回少年
轮回少年 2021-02-05 07:27

Is there a Delphi equivalent of the C# #if(DEBUG) compiler directive?

4条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-02-05 08:02

    Apart from what lassevk said, you can also use a few other methods of compiler-evaluation (since Delphi 6, I believe) :

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

    To check if the compiler has this feature, use :

     {$IFDEF CONDITIONALEXPRESSIONS}
    

    There are several uses for this.

    For example, you could check the version of the RTL; From the Delphi help :

    You can use RTLVersion in $IF expressions to test the runtime library version level independently of the compiler version level.
    Example: {$IF RTLVersion >= 16.2} ... {$IFEND}

    Also, the compiler version itself can be checked, again from the code:

    CompilerVersion is assigned a value by the compiler when the system unit is compiled. It indicates the revision level of the compiler features / language syntax, which may advance independently of the RTLVersion. CompilerVersion can be tested in $IF expressions and should be used instead of testing for the VERxxx conditional define. Always test for greater than or less than a known revision level. It's a bad idea to test for a specific revision level.

    Another thing I do regularly, is define a symbol when it's not defined yet (nice for forward-compatiblity), like this :

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

    Hope this helps!

提交回复
热议问题