是否有C##(DEBUG)编译器指令的Delphi相当于?德尔福#IF(调试)相当于?
15
A
回答
24
使用此:
{$IFDEF DEBUG}
...
{$ENDIF}
7
除了什么lassevk说,你也可以使用编译器评价的其他一些方法(因为德尔福6,我相信):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}
检查如果编译器具有此功能,请使用:
{$IFDEF CONDITIONALEXPRESSIONS}
这有几种用法。
例如,您可以检查RTL的版本;从德尔福帮助:
可以在$ IF使用RTLVersion 表达式来测试运行时 库版本级别的编译器版本级别的独立 。
实施例:{$ IF RTLVersion> = 16.2} ... {$ IFEND}
此外,编译器版本本身可以被检查,再次从代码:
CompilerVersion被分配一个值为 的编译器在编译时系统单元为 。它指示编译器功能/ 语言语法的修订版 级别,该语法语句可独立于RTLVersion而提前 。 CompilerVersion可以在$ IF 表达式中测试,应该使用 而不是测试VERxxx 条件定义。总是测试 大于或小于已知的 修订版级别。对于特定修订级别的 测试是一个不好的主意。
再就是我经常这样做,就是定义时,它没有定义,但(尼斯前向兼容性),这样的符号:
{$IF NOT DECLARED(UTF8String)}
type
UTF8String = type AnsiString;
{$IFEND}
希望这有助于!
3
这些控制指令可用:
{$IFDEF}
{$ELSE}
{$ENDIF}
{$IFNDEF} //if *not* defined
并且它们可被用作如下所示:
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;
5
DebugHook设定应用程序是否在IDE调试器下运行。不同于编译器指令,但仍然非常有用。例如:
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging
相关问题
- 1. 德尔福相当于从C
- 2. 德尔福相当于C#的DataGridView
- 3. 德尔福 - 当调用DragAcceptFiles
- 4. 德尔福调试器?
- 5. 在德尔福在BPG调试DLL
- 6. 德尔福调试终极指南
- 7. 德尔福调试错误的单位
- 8. 德尔福HID Delphi7和德尔福XE2
- 9. 德尔福v.Word - 如何从德尔福
- 10. 德尔福相当于在Visual Studio中的Ctrl + K + D?
- 11. 德尔福 - 相当于C#的三元运算符?
- 12. 德尔福 - 相当于C#DateTime.IsDaylightSavingTime()方法需要
- 13. 在C语言什么是FTEll()相当于德尔福
- 14. 德尔福 - 是否有任何相当于C#锁?
- 15. 的Visual Studio相当于德尔福书签
- 16. 德尔福XE2 Datasnap回调
- 17. 德尔福 - TPaintBox - 调整
- 18. DES_KEY_SZ德尔福
- 19. 德尔福Application.HintColor
- 20. 德尔福
- 21. 德尔福
- 22. 与德尔福
- 23. 德尔福
- 24. 德尔福:TRegExpr
- 25. 类德尔福
- 26. 什么是德尔福相当于“+ =”用于添加元素到一个集合?
- 27. 德尔福idhttp后相关的问题
- 28. 德卡尔和德尔福2009年
- 29. 创建德尔福
- 30. 德尔福在Vista
并确保项目选项定义DEBUG。我认为只有较新的Delphi(D2007及更高版本)版本会将其默认设置为调试版本。 – 2008-09-29 07:49:38
对于旧版本,您可以使用{$ IFOPT D +}。 'D'是“编译调试信息”的编译器选项符号。'D +'表示如果该选项为* ON *,那么应该只编译后面的内容。 – Deltics 2010-01-09 21:52:52
为了提高可读性{$ IFDEF DEBUG}的可移植性,您当然可以在标准定义包含文件中包含{$ IFOPT C +} {$ DEFINE DEBUG} {$ ENDIF}之类的内容(在与Delphi版本相关的章节中,不要自动为你定义DEBUG,但请注意,这个“自动定义”并不总是可靠的。DEBUGINFO我认为是自动定义的,但DEBUG仅在DEBUG构建的默认条件为原样时才被定义(它们是包括DEBUG作为一个“工厂”设置,但是这个可以并且可以被删除,也就是说,当构建调试信息时,它不是一个“内置”定义。 – Deltics 2010-01-09 21:56:07