delphi中的函数与过程统称为例程。
类似于变量,例程分为自定义例程和预定义例程。使用预定义例程前,必须直接或者间接引用例程所在的单元。
而使用自定义例程前,必须声明此例程。
注:在.dpr文件中我们可以将例程的声明与定义合在一起,但.pas文件中,必须先声明后定义,除非是嵌套例程。
1. 例程的声明:
语法格式如下:
函数: function 函数名(形参列表):返回值类型;[指示字];[调用约定];
过程: procedure 过程名(形参列表);[指示字];[调用约定];
其中形参列表的语法如下:
var 参数1:类型名1;var 参数2:类型名2;...... var 参数N:类型名N
注意:
(1) var 表示参数的传递方式,可以用out或者const代替
(2) 同一例程中不允许有同名参数
(3) 列表中参数间用分号间隔,但是最后一个参数末尾不能有分号
(4) 返回值类型不能是任何形式的文件类型
(5) 指示字为某些特定的关键字(virtual,abstract等)时,声明的例程可以不加任何指示字。
2. external 声明
有时我们需要从其他编译单元如 .obj 或 .dll 文件中引用一个例程,此时我们必须在指示字位置指定external关键字。
声明一个源于 .dll 文件的例程语法为:
procedure sample(var s:string); external 'SomeDll.dll';
external 后应接上 .dll 文件的完整名称(包括路径和文件名) , 当 .dll 与编写的程序位于同一文件夹时可以不包括路径
声明一个源于 .obj 文件的例程语法为:
procedure sample(var s:string); external;
在声明之前,必须程序必须引用相应的.obj 文件。其格式为:
{$L Block.obj}
3. forward 声明
用于提前声明一个例程。他使得例程在定义之前被调用
例如: