如何實現一個局部函數與過程
定義在函數和過程內部的函數和過程稱為局部函數和過程(子程序),子程序只在母過程內部有效。
下面我們來看看如何實現一個局部函數和過程的定義和使用。
1、新建一個Application。
2、在Form1窗體上放置一個Memo組件(Memo1)和兩個Button組件(Button1和Button2)。
3、雙擊Button1按鈕,在Button1Click事件中輸入以下代碼:
procedure TForm1.Button1Click(Sender: TObject);
- var
- X: Integer;
- {a local procedure}
- procedure Test;
- begin
- Memo1.Lines.Add('Local Function, X = ' + IntToStr(X));
- end;
- begin
- X := 100;
- Memo1.Lines.Clear;
- Memo1.Lines.Add('Main Function, X = ' + IntToStr(X));
- Test;
- end;
4、雙擊Button2按鈕,在Button2Click事件中輸入以下代碼:
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- Test; { 因為Test是在Button1Click中定義的,因此會報錯}
- end;
5、按Ctrl + F9編譯該項目,會發現報出以下錯誤:Undeclared identifier: 'Test’(未定義的標識符)
6、注釋掉Button2Click中的Test過程的調用,然后重新編譯運行,并點擊Button1按鈕后,結果如下:
分析
Test過程包含在Button1Click過程的var段中,用這種方法聲明的過程就是局部過程,它只局限于包含它的函數和過程。局部子程序只能被包含它的例程所調用,而在程序的其他地方時不能調用的。所以在Button2Click過程中無法實現Test的調用。
局部過程和函數的一個重要性質就是過程和函數中所包含的變量在局部子程序中也有效,如上面的范例Memo1中顯示的兩次X變量的值都是100,說明X變量不但在Button1Click中可用,也可以再它的子過程Test中使用。
以上程序均在Delphi7中編譯通過。
原文:http://www.cnblogs.com/pchmonster/archive/2011/12/22/2298705.html
【編輯推薦】