自己对DELPHI学习的一点体会

源代码在线查看: delphi object pascal 編譯器的編譯指令之五.txt

软件大小: 771 K
上传用户: pipinooad
关键词: DELPHI
下载地址: 免注册下载 普通下载 VIP

相关代码

				Delphi Object Pascal 編譯器的編譯指令之五({$DEFINE條件名稱})(本人會連續刊登) (2001年3月16日) 
				
				网友更新  分类:杂类   作者:erp2  推荐:erp2   阅读次数:193  
				(http://www.codesky.net)  
				
				--------------------------------------------------------------------------------
				
				姓名﹕黃智
				郵件﹕erp2@263.net
				日期﹕2001-03-16
				電話﹕13650246680
				
				{$DEFINE條件名稱} 定義條件名稱
				隨著您對Compiler Directives的瞭解與應用程度的加深, 您會發現這是一個非常實用的編譯指示。
				經常, 我們會因為除錯需要﹑區別不同版本等緣故, 希望選擇性的採用或排除某一段程式, 這個時候, 我們就可以先以$DEFINE定義好一個條件名稱(Conditional name), 然後配合{$IFDEF條件名稱}…{$ELSE}…{$ENDIF}指示編譯器按指定的條件名稱之有無來選擇需要編譯的程式。以下列的程式片斷來說:
				{$DEFINE _ProVersion}
				…
				procedure TForm1.Button1Click(Sender: TObject);
				begin
				{$IFDEF _Proversion}
				frmPrint.ShowModal; // A
				{$ELSE}
				ShowMessage('很抱歉, 試用版不提供列印功能');
				{$ENDIF}
				end;
				編譯器將會選擇編譯上述A的那列程式, 日後, 如果我們需要編譯「簡易版」的程式版本時, 只要:
				? 將{$DEFINE _ProVersion}那列整個刪掉。
				? 或者, 將{$DEFINE _ProVersion}改成{-$DEFINE _ProVersion}, 讓它變成普通的註解
				? 或者, 在{$DEFINE _ProVersion}的下一列加上{$UNDEF _ProVersion}, 解除_ProVersion這個條件名稱的定義。
				這樣, 由於_ProVersion這個條件名稱未定義的緣故, Compiler就只會選擇{$ELSE}下的那段程式, 重新編譯一次, 不需費太多力氣, 很容易的就可以製作出「簡易版」了, 省去了要同時維護兩份程式的麻煩。
				使用$DEFINE時的其他注意事項如下:
				? 以{$DEFINE}定義的條件名稱都是區域的。換句話說, 它的作用範圍只在當時所在的單元才有效, 即使定義在unit的interface, 由其他的unit以uses參考也沒有效, 仍然只有在目前的unit有作用。
				? 此外, 它的作用範圍是從定義起, 到unit結尾或者以{$UNDEF}解除為止。
				? 如果程式單元中已經用{$DEFINE}定義了一個條件名稱, 而且也沒有用{$UNDEF}解除定義, 重新{$DEFINE}一個同樣名稱並沒有作用, 換句話說, 它們是同一個.
				? 假如需要一個全域的條件名稱, 您可以:主選單: Project / Options / Directories/Conditional 的 Conditionals 中填入條件名稱。
				? 以下的標準條件名稱, 是Delphi 2.0已經預先預備好的, 我們可以直接引用, 同時, 它們都是全域的, 任何Unit都可以參照得到。
				? VER90: Delphi Object Pascal的版本編號。90表示9.0版, 日後若出現9.5版時, 也會有VER95的定義。
				? WIN32: 指出目前是在Win32(95, NT)作業環境
				? CUP386: 採用386(含)以上的CPU時, 系統會提供本條件名稱。
				? CONSOLE: 此符號會於應用程式是在螢幕模式下編譯時才定義。
				 
				 
							

相关资源