全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1238
推到 Plurk!
推到 Facebook!

關於Delphi中預編譯指令的使用方法

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-26 12:42:22 IP:61.221.xxx.xxx 未訂閱
此為轉貼資料 關於Delphi中預編譯指令的使用方法 在Delphi中,也有與C相似的預編譯指令,雖然該類指令只在當前的單個文件有效(也有可能是筆者未全面瞭解該類指令的真正用法),但是這一類指令對於進行多版本的製作工作(如從標準版中出學習版),確實有著相當不錯的用途。 一.指令介紹: 1. DEFINE指令: 格式:{$DEFINE 名稱} 說明 :用於定義一個在當前單元有效的符號(Symbol)。定義了 之後可以使用IF DEF和IFNDEF指令來判斷該符號是否存在。 2. UNDEF指令: 格式:{$UNDEF 名稱} 說明:用於取消一個在當前單元已經定義的符號(Symbol)。該指令和DEFINE 配合使用。 3. IFDEF指令: 格式:{$IFDEF 名稱} 說明:如果該指令後的名稱已經定義,則編譯該指令後直到{$ELSE}或{$ENDIF}之間的代碼段。 4. IFNDEF指令: 格式:{$IFNDEF 名稱} 說明:如果該指令後的名稱沒有定義,則編譯該指令後直到{$ELSE}或{$ENDIF}之間的代碼段。 5. IFOPT指令: 格式:{$IFOPT 開關} 說明:如果該指令後的開關已經設立,則編譯該指令後直到{$ELSE}或{$ENDIF}之間的代碼段。 舉例:{$IFOPT R } Writeln('編譯時打開範圍檢查開關'); {$ENDIF} 6. ELSE指令: 格式:{$ELSE} 說明:通過判斷字首Ifxxx的條件式來確定該指令到{$ENDIF}之間的代碼段是否應該被編譯或者忽略掉。 7. ENDIF指令: 格式:{$ENDIF} 說明:和Ifxxx配合,指明條件預編譯段源代碼段的結束位置。 二.範例: 編寫例子,通過預先定義不同的編譯符號,進行不用代碼段的編譯工作。 1. 新建一個Delphi專案,在Unit1單元的表單上添加一個Button按鈕。 2. 編寫程式如下: unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } a : String; end; var Form1: TForm1; implementation {$R *.DFM} {$DEFINE AAA} // 定義行。 procedure TForm1.FormCreate(Sender: TObject); begin a := 'Other'; {$IFDEF AAA} a := 'AAA'; {$ENDIF} {$IFDEF BBB} a := 'BBB'; {$ENDIF} end; procedure TForm1.Button1Click(Sender: TObject); begin Caption := a; end; end. {注:粗體字部分?輸入的代碼} 3. 編譯後運行,按下Button,則看到表單標題欄顯示“AAA”。程式編譯了a := ’AAA’的語句。 4. 改變定義行的程式段: 當改? {$DEFINE BBB} 時,再次編譯運行,則看到表單標題欄顯示“BBB”。程式編譯了a := ’BBB’的語句。 當取消定義行或改? {$DEFINE NOTHING} 或其他名稱時,再次編譯運行,則看到表單標題欄顯示“Other”。程式只編譯了a := ’Other’的語句。 三.如何快速的製作和更改版本: 使用預編譯指令,在製作同一個程式的多個版本時,只需找出各版本中有區別的單元,依次定義統一的版本符號(Symbol),然後在程式段中加入條件預編譯指令,就可以在實際編譯中取捨編譯不同的程式部分,這樣對於程式的規範性(定義統一的版本符號)和保密性(不同的版本編譯不同的程式部分)有很好的作用。 然而,由於該類預編譯指令只能作用於當前單元,所以不便之處在於不能在一個公共單元定義一次版本符號,而必須在各單元中定義統一版本符號才行,故此,在更換版本時,需要確定所有的版本符號都已改變,這樣才能保證各版本的正確性,對此,可以使用Delphi IDE的“Find in Files…”(多個文件中查找字串)的功能,找出所有定義版本符號的文件和位置,然後依次更改,保證所有位置已經改正。
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-09 9:13:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!