所谓参数类型指的不是参数的数据类型而是指在delphi中六中不同类型的参数,即数值参数、常量参数、变量参数、无类型参数、外部参数、以及开放数组参数。
在过程和函数中,形参可以分为3种,第一种在参数中不带var,称为数值参数,简称值参,第二种参数中带有var称为变量参数,简称变参,第三种带有const,称为常参。
1、数值参数
数值参数在过程和函数的使用中很常见,当调用过程或函数时,程序把实参值复制一份传递给数值参数,数值参数对过程或函数而言就是局部变量,对值参数的修改不会直接修改实参的值。
2、常量参数
在过程和函数中,常量参数的值是不可以改变的,因此可以将它作为常量使用,在过程和函数中,不可以为常量参数赋值,这样会出现编译错误,并且也不可以把常量参数作为实参传递给其他过程或函数
3、变量参数
变量参数可以接收从主程序传递来的实参,而且还可以向主程序返回值,在过程或函数中,当参数被改变时,实参的值也会改变,变量参数也可以起到回传信息的作用
4、无类型参数
无类型参数是指过程或函数声明时不指定参数的数据类型。如果参数没有指定数据类型,则需要在参数前加var、out或const。在参数前加
var或out表示参数的值是可变的,而在参数前加const则表示参数不可以改变。
当参数为无类型参数时,实参可以是任意数据类型的变量或表达式,使用无类型参数减少了工作时间,但也为delphi的编译器带来了麻烦,因为他没有对参数进行合法检查,所以在使用无类型参数时,应对其进行强制类型转换。
5、外部参数
如果在形参前使用out保留字,则该形参为外部参数,他不能用来向过程或函数中传入信息,只能传出。外部参数类似于变量参数,当过程或函数被调用结束后,通过外部参数可以回传某些信息,如果调用失败外部参数就被设为空。
外部参数主要用于不允许使用函数的com等分布式技术中,如果需要向例程传递一个没有初始化的变量可以使用外部参数。
6、开放数组参数
开放数组参数实际上就是一个参数数组,他的长度是不确定的,开放数组参数可以把静态数组和动态数组传递给本身,但不能用setlength改变动态数组长度。
7、默认参数
在声明过程或函数时可以设置参数的默认值。如果给某个参数指定了默认值,则称指定了默认值的参数为默认参数。
有关默认参数使用的几点说明如下:
(1)、给参数指定的默认值应与定义的数据类型匹配。
(2)、默认值必须是常数或常数表达式
(3)、只有过程或函数的类型参数和常量类型参数才有默认值
(4)、在参数中,默认参数后的其他参数也必须是默认参数,即默认参数只能出现在最后。
(5)、将两个或多个相同类型的参数定义为默认参数,必须给每个参数单独指定默认值,不能一起指定默认值