定义在函数和过程内部的函数和过程称为局部函数和过程(子程序),子程序只在母过程内部有效。
下面我们来看看如何实现一个局部函数和过程的定义和使用。
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中编译通过,示例代码下载:局部函数与过程.rar