这里是一个过程声明的例子:
procedure NumString(N: Integer; var S: string);
var
- 79 -
Procedures and functions
V: Integer;
begin
V := Abs(N);
S := '';
repeat
S := Chr(V mod 10 + Ord('0')) + S;
V := V div 10;
until V = 0;
if N < 0 then S := '-' + S;
end;
给定上面的声明,你能像这样调用NumString过程:
NumString(17, MyString);
这个过程调用把值“17”赋给MyString(它必须是字符串变量)。
在过程的语句块中,你可以使用在localDeclarations部分声明的变量和其它标志符;你也能使用参数列表中的参数名称(像上面例子中的N和S)。参数列表定义了一组局部变量,所以,不要在localDeclarations部分重新声明它们;最后,你还可以使用过程声明所在范围中的任何标志符。
有些过程并不是普通的过程而是内置在编译器之中的,所以你无法获得它们的地址。一些过程(如Exit)用起来就像是语言中的语句一样,但它们不是保留的关键字,你可以像使用其它过程一样使用它们。) Function declarations(函数声明)
函数声明和过程声明类似,除了它要指定一个返回值的类似和返回值。函数声明有如下格式: function functionName(parameterList): returnType; directives;
localDeclarations;
begin
statements
end;
这里,functionName是任何有效标志符,returnType是任何类型,statements是一系列语句,当调用函数时它们被执行;(parameterList)、directives; 和 localDeclarations是可选的。
? 要了解parameterList的信息,请参考Parameters;
? 要了解directives的信息,请参考Calling conventions、Forward and intece declarations、External
declarations、 Overloading procedures and functions、和Writing dynamically loadable libraries。如果包含多个指示字,用分号把它们隔开;
? localDeclarations定义局部标志符,要了解它的信息,请参考Local declarations。
函数的语句块和过程遵循相同的规则:在语句块内部,你可以使用在localDeclarations部分声明的变量和其它标志符、参数列表中的参数名称,以及函数声明所在范围的所有标志符。除此之外,函数名本身也扮演一个特殊的变量,它和内置的变量Result一样,存储函数的返回值。
比如,
function WF: Integer;
begin
WF := 17;
end;
定义了一个叫做WF的常量函数,它没有任何参数,并且返回值总是17。它和下面的声明是相同的: function WF: Integer;
- 80 -
Procedures and functions
begin
Result := 17;
end;
下面是一个更复杂的函数声明:
function Max(A: array of Real; N: Integer): Real;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-56.html
尤其是反舰导弹和机场