資源描述:
《DELPHI的編譯指令》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、DELPHI的編譯指令{$IFDEFWIN32}--這可不是批注喔!?對于Delphi來說﹐左右大括號之間的內(nèi)容是批注﹐然而「{$」(左括號后緊接著貨幣符號)對于Compiler(編譯器)而言并不是批注﹐而是寫給Compiler看的特別指示。應(yīng)用時機(jī)與場合Delphi中有許許多多的CompilerDirectives(編譯器指令)﹐這些編譯指令對于我們的程序發(fā)展有何影響呢?它們又能幫我們什么忙呢?CompilerDirective對程序開發(fā)的影響與助益,可以從以下幾個方向來討論:協(xié)助除錯?版本分類?程序的重用與管理?設(shè)定統(tǒng)一的執(zhí)行環(huán)境協(xié)助除錯穩(wěn)
2、健熟練的程序設(shè)計(jì)師經(jīng)常會在開發(fā)應(yīng)用系統(tǒng)的過程中﹐特別加入一些除錯程序或者回饋驗(yàn)算的程序﹐這些除錯程序?qū)τ谲浖焚|(zhì)的提升有極其正面的功能。然而開發(fā)完成的正式版本中如果不需要這些額外的程序的話﹐要想在一堆程序中找出哪些是除錯用的程序并加以刪除或設(shè)定為批注﹐不僅累人﹐而且容易出錯﹐況且日后維護(hù)時這些除錯程序還用得著。此時如果能夠應(yīng)用像是$IFDEF的CompilerDirectives﹐就可以輕易的指示Delphi要/不要將某一段程序編進(jìn)執(zhí)行文件中。?同時﹐Compiler本身也提供了一些錯誤檢查的開關(guān)﹐可以預(yù)先對程序中可能的問題提醒程序設(shè)計(jì)師注意﹐
3、同樣有助于撰寫正確的程序。版本分類除了上述的除錯版本/正式版本的分類之外﹐對于像是「試用版」「普及版」「專業(yè)版」的版本分類﹐也可以經(jīng)由CompilerDirective的使用﹐為最后的產(chǎn)品設(shè)定不同的使用權(quán)限。其它諸如「中文版」「日文版」「國際標(biāo)準(zhǔn)版」等全球版本管理方面﹐同樣也可以視需要指示Delphi特別連結(jié)哪些資源檔或者是采用哪些適當(dāng)?shù)某绦颉R陨系膬蓜t例子中﹐各版本間只需共享同一份程序代碼即可。Delphi1.0與Delphi2.0有許多不同之處﹐組件資源文件(.DCR)即是其中一例﹐兩者的檔案格式并不兼容﹐在您讀過本文之后﹐相信可以寫出這樣
4、的程序﹐指示Delphi在不同的版本采用適當(dāng)?shù)馁Y源文件以利于組件的安裝。{$IFDEFWIN32}?{$RXXX32.DCR}?{$ELSE}?{$RXXXX16.DCR}?{$EDNIF}程序的重用與管理經(jīng)過前文的討論后﹐相信你已經(jīng)不難看出CompilerDirectives在程序管理上的應(yīng)用價(jià)值。對于原始程序的重用與管理﹐也是CompilerDirectives使得上力的地方.舉例來說:Pascal-Style字符串是Delphi1.0與Delphi2.0之間的明顯差異﹐除了原先的短字符串之外﹐Delphi2.0之后還多了更為方便使用的長字
5、符串﹐同時﹐系統(tǒng)也額外提供了像是Trim()這樣的字符串處理函式。假如您有一個字符串處理單元必須要同時應(yīng)用于Delphi1.0與2.0的項(xiàng)目時﹐編譯指示器可以幫你的忙。此外﹐透過像是{$Ixxxx}這樣的CompilerDirectives﹐我們也可以適當(dāng)?shù)暮肽承┏绦?同樣有助于切割組合我們的程序或編譯設(shè)定。設(shè)定一致的執(zhí)行環(huán)境項(xiàng)目小組的成員間﹐必須有共同的環(huán)境設(shè)定﹐我很難預(yù)料一個小組成員間彼此有不同的{$B}{$H}{$X}設(shè)定﹐最后子系統(tǒng)在并入主程序時會發(fā)生什么事。此外,當(dāng)您寫好一個組件或單元需要交予第三者使用時,使用編譯指示器也可以保證組
6、件使用者與您有相同的編譯環(huán)境。使用CompilerDirectives指令語法CompilerDirectives從外表看起來與批注頗為類似,與批注不同的是:CompilerDirectives的語法格式都是以「{$」開始,不空格緊接一個名稱(或一個字母)表明給Compiler的特別指示,再加上其它的開關(guān)或參數(shù)內(nèi)容,最后以右大括號作為指令的結(jié)束,例如:{$B+}?{$R-}?{$RMyCursor.res}同時,就如同Pascal的變量名稱與保留字一樣,CompilerDirectives也是不區(qū)分大小寫的。?從指令的語法格式來說Compile
7、rDirectives﹐可以進(jìn)一步分類成以下三種格式:開關(guān)指令(Switchdirectives)?這類指令都是單一字母以不空格的方式連接「+」或「-」符號;或者是開關(guān)名稱以一個空格后連接「ON」或「OFF」來表示作用/關(guān)閉某一個編譯指示開關(guān)。例如:{$A+}?{$ALIGNON}開關(guān)型的編譯指令不一定要分行寫,它們可以組合在同一個編譯指示的批注符號之間,但必須以逗號連接,而且中間不可以有空格,例如:?{$B+,H+,T-,J+}光標(biāo)停留在程序編輯器的任一位置時按下Ctrl+OO,完整的CompilerDirectives將會全部列于Unit的
8、最上方。參數(shù)指令(Parameterdirectives)?有些CompilerDirectives需要在編譯名稱后面連接自定的參數(shù)(文件名稱或指定的