函数和过程是独立于主程序的代码段,在程序中,当需要完成一些特定动作时,这些代码段就会被执行。在整个程序中可以任意次调用这些函数。
Delphi中的例程有两种形式:过程(procedures)和函数(functions)。
过程是你要求计算机执行的操作;函数是能返回值的计算。两者突出的不同点在于函数能返回计算结果,即有一个返回值,而过程没有。
通过编写一个函数的范例,先来大概了解了解。
1、新建一个Application。
2、在Form1窗体上放置一个Button组件(btn1)和一个Label组件(lbl1),如下图:
3、在Code Editor中的implementation段中输入下面的代码:
... var Form1: TForm1; implementation {$R *.dfm} procedure SayHello; begin ShowMessage('Hello, World'); end; function Multiply(Num1, Num2: Integer): Integer; begin Result := Num1 * Num2; end; end.
4、然后在Form Designer中双击btn1建立一个OnClick事件处理程序,输入如下代码:
procedure TForm1.btn1Click(Sender: TObject); var X: Integer; begin X := Multiply(10, 20); //调用Multiply函数,返回10*20的结果给X lbl1.Caption := IntToStr(X); //在label标签中显示结果200 SayHello; //调用SayHello过程 end;
5、运行程序F9并点击按钮,结果中标签将变为200,并显示Hello, World对话框信息,结果如下:
6、其整个工作流程如下:
当点击按钮后,调用btn1Click事件处理程序,这样就会继续Multiply函数,并以10和20为传递参数,结果放在X变量中,并在lbl1标签中显示出来。
7、每一个函数都有一个名为Result的局部变量,这个变量时由编译器以不可视方式加以声明,并且它是用来保存函数的返回值,因此为了从函数中返回一个指定的值,只需要把这个值赋值给函数中的Result变量即可。
8、函数的调用有多种方法,传递的变量可以是直接的数值,也可以是其他函数调用结果,以下都是正确的调用形式:
X := Multiply(2, 5); { 直接传递数值} X := Multiply(A, B); { 传递变量A和B} lbl1.Caption := IntToStr(Multiply(X, Y)); { 返回值用作另一个函数的参数} Multiply(X, Y); { 返回值无效}
Tip
- 只要在程序中多次重复使用一段代码,就可以把这段代码移到一个子程序中。这样在程序中需要这段代码的地方都就可以调用此子程序。
- 如果不需要返回值,函数也可以当做过程一样调用。
- 当函数和过程没有参数时,可以直接使用名字调用,而不需要加“()”这个空括号。如例子中的SayHello调用。