Pascal过程与函数
Pascal中的例程有两种形式:过程和函数。理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算。两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。两种类型的例程都可以带多个给定类型的参数。不过实际上函数和过程差别不大,因为你可以调用函数完成一系列操作,跳过其返回值用可选的出错代码或类似的东西代替返回值;也可以通过过程的参数传递计算结果(这种参数称为引用,下一部分会讲到)。下例定义了一个过程、两个函数,两个函数的语法略有不同,结果是完全相同的。procedureHellobegi
ShowMessageHelloworlde
dfu
ctio
DoubleValueI
tegerI
tegerbegi
DoubleValue2e
d
orasa
alter
ative
fu
ctio
Double2ValueI
tegerI
tegerbegi
ResultValue2e
d流行的做法是用Result给函数赋返回值,而不是用函数名,我认为这样的代码更易读。一旦定义了这些例程,你就可以多次调用,其中调用过程可执行操作;调用函数能计算返回值。如下:procedureTForm1Butto
1ClickSe
derTObjectbegi
Helloe
dprocedureTForm1Butto
2ClickSe
derTObjectvarXYI
teger
fbegi
XDoubleStrToI
tEdit1TextYDoubleXShowMessageI
tToStrYe
d注意:现在不必考虑上面两个过程的语法,实际上它们是方法。只要把两个按钮butto
放到一个Delphi窗体上,在设计阶段单击它们,DelphiIDE将产生合适的支持代码,你只需要填上begi
和e
d之间的那几行代码就行。编译上面的代码,需要你在窗体中加一个Edit控件。现在回到我前面提到过的代码封装概念。当你调用Double函数时,你不需要知道该函数的具体实现方法。如果以后发现了更好的双倍数计算方法,你只需要改变函数的代码,而调用函数的代码不必改变(尽管代码执行速度可能会加快!)。Hello过程也一样,你可以通过改变这个过程的代码,修改程序的输出,Butto
2Click方法会自动改变显示结果。下面是改变后的代码:procedureHellobegi
MessageDlgHelloworldmtI
formatio
mbOKe
d提示:当调用一个现有的Delphi函数、过程或任何VCL方法时,你应该记住参数的个数及其数据类型。不过,只要键入函数或过程名及左括号,Delphi编辑器中会出现即时提示条,列出函数或过程的参数表供参考。这一特性被称为代码参数CodeParameters,是代码识别技术的一部分。
引用参数
Pascal例程的传递参数可以是值参也可以是引用参数。值参传递是缺省的参数传递方式:即将值参的拷贝压入栈中,例程使用、操纵的是栈中的拷贝值,不是原始值。当通r