?? 007.htm
字號:
face="宋體" lang="ZH-CN">部分含有庫函數(shù)、類型、私有,公有域的說明,也可以含有常量、變量的說明。這一部分可以作為程序模塊的說明部分。在庫單元的</font>implementation<fontface="宋體" lang="ZH-CN">部分中通常含有各種事件處理過程,它們可以視為模塊的語句部分,是事件處理模塊。庫單元模塊結(jié)束于庫單元結(jié)束的</font>end.<fontface="宋體" lang="ZH-CN">處。</font></p><p><font face="宋體" lang="ZH-CN"> 程序模塊中可以包含其他的程序模塊。上文庫單元模塊中含有事件處理模塊。而庫單元模塊實際是在工程程序模塊中。</font></p><p><font face="宋體" lang="ZH-CN"> 所有的</font>Delphi<font face="宋體"lang="ZH-CN">應(yīng)用程序都有相同的基本結(jié)構(gòu)。當(dāng)程序逐漸復(fù)雜時,在程序中加入模塊即可。例如在庫單元模塊中加入事件處理模塊,向工程中加入庫單元模塊等。模塊化編程使得程序結(jié)構(gòu)良好,并且對數(shù)據(jù)具有保護(hù)作用。 </p></font><p>2.1.7 <font face="宋體" lang="ZH-CN">關(guān)于作用范圍 </p></font><p>2.1.7.1 <font face="宋體" lang="ZH-CN">標(biāo)識符的作用范圍 </p></font><p><font face="宋體" lang="ZH-CN"> 一個變量、常量、方法、類型或其他標(biāo)識符的范圍定義了這個標(biāo)識符的活動區(qū)域。對于說明這個標(biāo)識符的最小程序模塊而言,此標(biāo)識符是局部的。當(dāng)您的應(yīng)用程序在說明一個標(biāo)識符的程序模塊外執(zhí)行時,該標(biāo)識符就不在此范圍內(nèi)。這意味著此時執(zhí)行的程序無法訪問這個標(biāo)識符,只有當(dāng)程序再度進(jìn)入說明這個標(biāo)識符的程序模塊時,才可以訪問它。</font></p><p><font face="宋體" lang="ZH-CN"> 下面的示意圖表示一個含有兩個庫單元的工程,每個庫單元中又各有三個過程或事件處理過程。</font></p><p>2.1.7.2 <font face="宋體" lang="ZH-CN">訪問其他程序模塊中的說明 </p></font><p><font face="宋體" lang="ZH-CN"> 您可以在當(dāng)前的程序模塊中訪問其他程序模塊中的說明。例如您在庫單元中編寫一個事件處理過程來計算利率,則其他的庫單元可以訪問這個事件處理過程。要訪問不在當(dāng)前庫單元中的說明,應(yīng)在這個說明之前加上其他應(yīng)用程序的名稱和一個點號</font>(.)<fontface="宋體" lang="ZH-CN">。例如,在庫單元</font>Unit1<font face="宋體"lang="ZH-CN">中有事件處理過程</font>CalculateInterest<font face="宋體"lang="ZH-CN">過程,現(xiàn)在您想在庫單元</font>Unit2<font face="宋體" lang="ZH-CN">中調(diào)用這一過程,則可以在</font>Unit2<fontface="宋體" lang="ZH-CN">的</font>uses<font face="宋體" lang="ZH-CN">子句中加入</font>Unit1<fontface="宋體" lang="ZH-CN">,并使用下面的說明: </p></font><p>Unit1.CalculateInterest(PrincipalInterestRate : Double)<font face="宋體"lang="ZH-CN">; </p></font><p><font face="宋體" lang="ZH-CN"> 應(yīng)用程序的代碼不能在一個模塊外訪問它說明的變量。事實上,當(dāng)程序執(zhí)行跳出一個模塊后,這些變量就不存在于內(nèi)存中了。這一點對于任何標(biāo)識符都是一樣的,不管事件處理過程、過程、函數(shù)還是方法,都具有這一性質(zhì)。這樣的標(biāo)識符稱為局部變量。 </p></font><p>2.1.7.3 <font face="宋體" lang="ZH-CN">按照作用范圍說明標(biāo)識符</font></p><p><font face="宋體" lang="ZH-CN"> 您可以在應(yīng)用程序的不同地方說明一個標(biāo)識符,而只需保證它們的有效范圍不同即可。編譯器會自動訪問最靠近當(dāng)前范圍的標(biāo)識符。</font></p><p><font face="宋體" lang="ZH-CN"> 庫單元的全局變量一般可以說明在保留字</font>implementation<fontface="宋體" lang="ZH-CN">后面。例如,下面的例程實現(xiàn)將兩個編輯框中的整數(shù)相加,顯示在第三個編輯框中。用到了一個整形的全局變量</font>Count<fontface="宋體" lang="ZH-CN">: </p></font><p><font face="宋體" lang="ZH-CN">…</font>implememntation </p><p>var</p><p>Count : Integer; </p><p>procedure TForm1.AddClick(Sender:TObject);</p><p>var</p><p>FirstNumber,SecondNumber:Integer;</p><p>begin</p><p>Count := Count + 1;</p><p>Counter.Text := IntToStr(Count);</p><p>FirstNumber := StrToInt(Edit1.Text);</p><p>SecondNumber := StrToInt(Edit2.Text);</p><p>Edit3.Text := IntToStr(FirstNumber+SecondNumber); </p><p>end;</p><p><font face="宋體" lang="ZH-CN">… </p></font><p><font face="宋體" lang="ZH-CN"> 為了實現(xiàn)每按動一次按鈕</font>Count<fontface="宋體" lang="ZH-CN">增加一次,必須對全程變量</font>Count<fontface="宋體" lang="ZH-CN">進(jìn)行初始化處理。在程序庫單元的結(jié)尾處,最后一個</font>end.<fontface="宋體" lang="ZH-CN">保留字之前,加入保留字</font>initialization<fontface="宋體" lang="ZH-CN">和初始化</font>Count<font face="宋體" lang="ZH-CN">的代碼: </p></font><p><font face="宋體" lang="ZH-CN">…</font></p><p>initialization</p><p>Count := 0; </p><p><font face="宋體" lang="ZH-CN"> 這樣當(dāng)事件處理過程</font>AddClick<fontface="宋體" lang="ZH-CN">被觸發(fā)時,</font>Count<font face="宋體" lang="ZH-CN">就會被增加一次,以表征計算次數(shù)。如果用面向?qū)ο缶幊蹋瑒t</font>Count<fontface="宋體" lang="ZH-CN">可以說明成窗體的一個域,這在下一節(jié)中將有講述。 </p></font><p>2.1.8 <font face="宋體" lang="ZH-CN">編寫一個過程或函數(shù)</font></p><p><font face="宋體" lang="ZH-CN"> 在您開發(fā)</font>Delphi<fontface="宋體" lang="ZH-CN">應(yīng)用程序時,所需的大部分代碼都編寫在事件處理過程中,但有時仍然需要編寫不是事件處理過程的函數(shù)或過程。例如,您可以把在多個事件處理過程中用得到語句編寫成過程,然后任何事件處理過程、過程、函數(shù)都可以象調(diào)用已經(jīng)存在的過程或函數(shù)一樣直接調(diào)用它。好處是您只需編寫一次代碼,而且程序代碼會比較清楚。</p></font><p>2.1.8.1 <font face="宋體" lang="ZH-CN">一個自行編寫的函數(shù)例程 </p></font><p><font face="宋體" lang="ZH-CN"> 在上文兩個數(shù)相加的程序中,如果編輯框中無值,則會使得程序出錯中斷。為避免這種情況,編寫下面的函數(shù),檢查編輯框中是否有值,如無值,則提醒用戶輸入: </p></font><p>function NoValue(AnEditBox:TEdit):Boolean;</p><p>begin</p><p>if AnEditBox.Text='' then</p><p>begin</p><p>AnEditBox.Color := clRed;</p><p>AnEditBox.Text := '<font face="宋體" lang="ZH-CN">請輸入整數(shù)值</font>';</p><p>Result := True;</p><p>end</p><p>else</p><p>begin</p><p>AnEditBox.Color := clWindow;</p><p>Result := False;</p><p>end;</p><p>end; </p><p> NoValue<font face="宋體" lang="ZH-CN">函數(shù)會檢查編輯框是否為空,如果是,編輯框顏色變紅,并提醒用戶輸入一個整數(shù),然后函數(shù)返回真值;</font>Result<fontface="宋體" lang="ZH-CN">保留字在</font>Delphi<font face="宋體" lang="ZH-CN">中用來專指函數(shù)返回值。在上文的例程中加入</font>NoValue<fontface="宋體" lang="ZH-CN">函數(shù): </p></font><p>procedure TForm1.AddClick(Sender: TObject);</p><p>var</p><p>FirstNumber,SecondNumber : Integer;</p><p>begin</p><p>if NoValue(Edit1)or NoValue(Edit2) then</p><p>exit;</p><p>Count := Count + 1;</p><p>Counter.Text := IntToStr(Count);</p><p>FirstNumber := StrToInt(Edit1.Text);</p><p>SecondNumber := StrToInt(Edit2.Text);</p><p>Edit3.Text := IntToStr(FirstNumber+SecondNumber);</p><p>end; </p><p><font face="宋體" lang="ZH-CN"> 如果其中的任何一個返回真值,則表示有編輯框空,會執(zhí)行</font>exit<fontface="宋體" lang="ZH-CN">過程,使得當(dāng)前的程序模塊停止執(zhí)行,并使得編輯框出現(xiàn)輸值提示。當(dāng)新值被輸入后,再執(zhí)行程序時,紅色提示被隱去,恢復(fù)正常的計算狀態(tài)。 </p></font><p>2.1.8.2 <font face="宋體" lang="ZH-CN">過程和函數(shù)的標(biāo)題 </p></font><p><font face="宋體" lang="ZH-CN"> 每一個過程或函數(shù)都以標(biāo)題開始,其中包括過程或函數(shù)的名稱和它使用的參數(shù)。過程以保留字</font>procedure<fontface="宋體" lang="ZH-CN">開始,函數(shù)以保留字</font>function<font face="宋體"lang="ZH-CN">開始。參數(shù)位于括號里面,每一個參數(shù)以分號分隔。例如: </p></font><p>procedure validateDate(Day : Integer; month : Integer; Year : Integer);</p><p><font face="宋體" lang="ZH-CN"> 您也可以將相同類型的參數(shù)組合在一起,則上述過程頭寫作: </p></font><p>procedure ValidateDate(Day, Month, Year : Integer); </p><p><font face="宋體" lang="ZH-CN"> 函數(shù)在標(biāo)題中還多了一項:返回值的類型。下面是一個返回值為</font>Double<fontface="宋體" lang="ZH-CN">型的函數(shù)標(biāo)題: </p></font><p>function CalculateInterest(principal,InterestRate:Double):Double; </p><p>2.1.8.3 <font face="宋體" lang="ZH-CN">函數(shù)和過程中的類型說明 </p></font><p><font face="宋體" lang="ZH-CN"> 一個過程或函數(shù)程序模塊也含有說明部分和語句部分。說明部分可以包括類型說明、變量說明、常量說明等。除了</font>ObjectPascal<font face="宋體" lang="ZH-CN">語言中已經(jīng)定義的類型之外,</font>Delphi<fontface="宋體" lang="ZH-CN">的應(yīng)用程序還可以建立新的數(shù)據(jù)類型。類型說明部分有保留字</font>type<fontface="宋體" lang="ZH-CN">開始。下面是一些類型的說明: </p></font><p>type </p><p>Tcount = Integer;</p><p>TPrimaryColor = (Red,Yellow,Blue);</p><p>TTestIndex = 1..100;</p><p>TTextValue = -99..99;</p><p>TTestList = array [TTestIndex] of TTestValue;</p><p>TCharVal = Ord('A')..Ord('Z') ;</p><p>Today = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,</p><p>Sunday) ; </p><p><font face="宋體" lang="ZH-CN"> 在類型標(biāo)識符后面,用“=”號定義了新的類型。類型界定了變量的取值范圍,例如,</font>TCount<fontface="宋體" lang="ZH-CN">類型的變量必須是整形值;一個</font>TPrimaryColor<fontface="宋體" lang="ZH-CN">類型的變量只能是</font>red<font face="宋體"lang="ZH-CN">、</font>yellow<font face="宋體" lang="ZH-CN">或</font>blue<fontface="宋體" lang="ZH-CN">等等。每一個類型的名稱都是由字母</font>T<fontface="宋體" lang="ZH-CN">開始,這并非必須的,但它是</font>Delphi<fontface="宋體" lang="ZH-CN">的慣例,在區(qū)別類型名和標(biāo)識符時非常有用。類型說明可以是局部的,也可以是全局的。如果您把它放在</font>implementation<fontface="宋體" lang="ZH-CN">后面,則表明對于庫單元來講,它是全局的,所有的事件處理過程和其他的過程、函數(shù)都可以調(diào)用它。如果類型是在過程中被說明的,則是局部的,離開這一過程,該類型將失效。</font></p><p><font face="宋體" lang="ZH-CN"> 一般來講,在過程和函數(shù)中,任何類型說明都在變量說明之前,而任何變量說明都在常量之前。但是,只要遵從說明必須在過程與函數(shù)的標(biāo)題之后,而且在程序代碼之前,即是有效的。</font></p><hr width="94%"></TD><TD CLASS="tt3" VALIGN="bottom" width="8%" ><strong><A HREF="008.htm"><FONT style="FONT-SIZE: 9pt">后一頁</font></A><BR><A HREF="006.htm"><FONT style="FONT-SIZE: 9pt">前一頁</font></A><BR><A HREF="index.html"><FONT style="FONT-SIZE: 9pt">回目錄</font></A><BR></strong></TD></TR></table></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -