2.1.8 編寫一個(gè)過程或函數(shù)
在您開發(fā)Delphi應(yīng)用程序時(shí),所需的大部分代碼都編寫在事件處理過程中,但有時(shí)仍然需要編寫不是事件處理過程的函數(shù)或過程。例如,您可以把在多個(gè)事件處理過程中用得到語句編寫成過程,然后任何事件處理過程、過程、函數(shù)都可以象調(diào)用已經(jīng)存在的過程或函數(shù)一樣直接調(diào)用它。好處是您只需編寫一次代碼,而且程序代碼會(huì)比較清楚。
2.1.8.1 一個(gè)自行編寫的函數(shù)例程
在上文兩個(gè)數(shù)相加的程序中,如果編輯框中無值,則會(huì)使得程序出錯(cuò)中斷。為避免這種情況,編寫下面的函數(shù),檢查編輯框中是否有值,如無值,則提醒用戶輸入:
function NoValue(AnEditBox:TEdit):Boolean;
begin
if AnEditBox.Text='' then
begin
AnEditBox.Color := clRed;
AnEditBox.Text := '請(qǐng)輸入整數(shù)值';
Result := True;
end
else
begin
AnEditBox.Color := clWindow;
Result := False;
end;
end;
NoValue函數(shù)會(huì)檢查編輯框是否為空,如果是,編輯框顏色變紅,并提醒用戶輸入一個(gè)整數(shù),然后函數(shù)返回真值;Result保留字在Delphi中用來專指函數(shù)返回值。在上文的例程中加入NoValue函數(shù):
procedure TForm1.AddClick(Sender: TObject);
var
FirstNumber,SecondNumber : Integer;
begin
if NoValue(Edit1)or NoValue(Edit2) then
exit;
Count := Count + 1;
Counter.Text := IntToStr(Count);
FirstNumber := StrToInt(Edit1.Text);
SecondNumber := StrToInt(Edit2.Text);
Edit3.Text := IntToStr(FirstNumber+SecondNumber);
end;
如果其中的任何一個(gè)返回真值,則表示有編輯框空,會(huì)執(zhí)行exit過程,使得當(dāng)前的程序模塊停止執(zhí)行,并使得編輯框出現(xiàn)輸值提示。當(dāng)新值被輸入后,再執(zhí)行程序時(shí),紅色提示被隱去,恢復(fù)正常的計(jì)算狀態(tài)。
2.1.8.2 過程和函數(shù)的標(biāo)題
每一個(gè)過程或函數(shù)都以標(biāo)題開始,其中包括過程或函數(shù)的名稱和它使用的參數(shù)。過程以保留字procedure開始,函數(shù)以保留字function開始。參數(shù)位于括號(hào)里面,每一個(gè)參數(shù)以分號(hào)分隔。例如:
procedure validateDate(Day : Integer; month : Integer; Year : Integer);
您也可以將相同類型的參數(shù)組合在一起,則上述過程頭寫作:
procedure ValidateDate(Day, Month, Year : Integer);
函數(shù)在標(biāo)題中還多了一項(xiàng):返回值的類型。下面是一個(gè)返回值為Double型的函數(shù)標(biāo)題:
function CalculateInterest(principal,InterestRate:Double):Double;
2.1.8.3 函數(shù)和過程中的類型說明
一個(gè)過程或函數(shù)程序模塊也含有說明部分和語句部分。說明部分可以包括類型說明、變量說明、常量說明等。除了Object Pascal語言中已經(jīng)定義的類型之外,Delphi的應(yīng)用程序還可以建立新的數(shù)據(jù)類型。類型說明部分有保留字type開始。下面是一些類型的說明:
type
Tcount = Integer;
TPrimaryColor = (Red,Yellow,Blue);
TTestIndex = 1..100;
TTextValue = -99..99;
TTestList = array [TTestIndex] of TTestValue;
TCharVal = Ord('A')..Ord('Z') ;
Today = (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,
Sunday) ;
在類型標(biāo)識(shí)符后面,用“=”號(hào)定義了新的類型。類型界定了變量的取值范圍,例如,TCount類型的變量必須是整形值;一個(gè)TPrimaryColor類型的變量只能是red、yellow或blue等等。每一個(gè)類型的名稱都是由字母T開始,這并非必須的,但它是Delphi的慣例,在區(qū)別類型名和標(biāo)識(shí)符時(shí)非常有用。類型說明可以是局部的,也可以是全局的。如果您把它放在implementation后面,則表明對(duì)于庫單元來講,它是全局的,所有的事件處理過程和其他的過程、函數(shù)都可以調(diào)用它。如果類型是在過程中被說明的,則是局部的,離開這一過程,該類型將失效。
一般來講,在過程和函數(shù)中,任何類型說明都在變量說明之前,而任何變量說明都在常量之前。但是,只要遵從說明必須在過程與函數(shù)的標(biāo)題之后,而且在程序代碼之前,即是有效的。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |