是否有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