在VFP中如何将数组传递给自定义函数
自己定义一个自定义函数,想让数组作为参数传递,不知道该如何定义这个参数,数组怎么传递给函数?函数如何接收这个数组?如何将数组作为自定义函数的参数?我定义的这个函数是用来显...
自己定义一个自定义函数,想让数组作为参数传递,不知道该如何定义这个参数,数组怎么传递给函数?函数如何接收这个数组?如何将数组作为自定义函数的参数?
我定义的这个函数是用来显示二维数组的内容,是函数,不是过程,是要用在messagbox("",0+64,"aaa")函数当中的,传递给自定义函数的数组是一个不确定长度的二维数组。 展开
我定义的这个函数是用来显示二维数组的内容,是函数,不是过程,是要用在messagbox("",0+64,"aaa")函数当中的,传递给自定义函数的数组是一个不确定长度的二维数组。 展开
1个回答
展开全部
看看下面的解释和实例就明白了。
PARAMETERS 命令
将调用程序传来的数据赋值给私有内存变量或数组。
语法
PARAMETERS ParameterList
参数
ParameterList
指定接收数据的内存变量或数组。
“ParameterLis”中的参数应用逗号分隔。PARAMETERS 语句中的参数数目至少应与 DO ... WITH 语句中的参数数目相同。如果 PARAMETERS 语句中所列的变量或数组数目比 DO ... WITH 语句传递的多,剩余的变量或数组就初始化为“假”(.F.)。最多可传递 27 个参数。
PARAMETERS( ) 函数返回传递给最近执行程序的参数数目。
说明
当 PARAMETERS 命令与 DO ... WITH 语句一起使用时,它必须是被调用程序、过程或用户自定义函数中的第一条可执行语句。
默认情况下,DO ... WITH 语句以引用传递方式向过程传递变量和数组。当一个值在被调用过程中更改时,新值传递回调用程序中相关的变量或数组。如果想以值传递方式向一个过程传递变量或数组,在 DO ... WITH 语句的参数列表中用括号把变量或数组括起来,这样,在被调用过程中对参数的任何更改都不传回调用程序。
默认情况下,变量以引用传递方式向过程传递,以值传递方式向一个用户自定义函数传递。使用 SET UDFPARMS TO REFERENCE 命令,能以引用传递方式向用户自定义函数传递变量。
* 下面的示例向一个错误处理例程传递变量。
ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;
MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR &&还原系统错误处理例程
PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Error number: ' + LTRIM(STR(gnError))
? 'Error message: ' + gcMess
? 'Line of code with error: ' + gnMess1
? 'Line number of error: '+ LTRIM(STR(gnLineNo))
? 'Program with error: ' + gcProg
*测试数组传递数据
dimension a(5)
a(1)=5
a(2)=4
a(3)=3
a(4)=6
a(5)=7
? a(1),a(2),a(3),a(4),a(5) &&传递前的数组值
aa=ttt(@a) &&引用函数,在数组前加上@
? aa &&函数的返回值
? a(1),a(2),a(3),a(4),a(5) &&传递后的数组值
func ttt
para b(5)
b(1)=1+b(1)
b(2)=3+b(2)
return "OK"
func 定义的的就是一个函数。你可以在自定义函数或过程中使用数组,但是系统函数并不是都支持数组引用的。
PARAMETERS 命令
将调用程序传来的数据赋值给私有内存变量或数组。
语法
PARAMETERS ParameterList
参数
ParameterList
指定接收数据的内存变量或数组。
“ParameterLis”中的参数应用逗号分隔。PARAMETERS 语句中的参数数目至少应与 DO ... WITH 语句中的参数数目相同。如果 PARAMETERS 语句中所列的变量或数组数目比 DO ... WITH 语句传递的多,剩余的变量或数组就初始化为“假”(.F.)。最多可传递 27 个参数。
PARAMETERS( ) 函数返回传递给最近执行程序的参数数目。
说明
当 PARAMETERS 命令与 DO ... WITH 语句一起使用时,它必须是被调用程序、过程或用户自定义函数中的第一条可执行语句。
默认情况下,DO ... WITH 语句以引用传递方式向过程传递变量和数组。当一个值在被调用过程中更改时,新值传递回调用程序中相关的变量或数组。如果想以值传递方式向一个过程传递变量或数组,在 DO ... WITH 语句的参数列表中用括号把变量或数组括起来,这样,在被调用过程中对参数的任何更改都不传回调用程序。
默认情况下,变量以引用传递方式向过程传递,以值传递方式向一个用户自定义函数传递。使用 SET UDFPARMS TO REFERENCE 命令,能以引用传递方式向用户自定义函数传递变量。
* 下面的示例向一个错误处理例程传递变量。
ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), ;
MESSAGE(1),PROGRAM( ),LINENO( )
USE nodatabase
ON ERROR &&还原系统错误处理例程
PROCEDURE errhand
PARAMETERS gnError, gcMess, gnMess1, gcProg, gnLineNo
? 'Error number: ' + LTRIM(STR(gnError))
? 'Error message: ' + gcMess
? 'Line of code with error: ' + gnMess1
? 'Line number of error: '+ LTRIM(STR(gnLineNo))
? 'Program with error: ' + gcProg
*测试数组传递数据
dimension a(5)
a(1)=5
a(2)=4
a(3)=3
a(4)=6
a(5)=7
? a(1),a(2),a(3),a(4),a(5) &&传递前的数组值
aa=ttt(@a) &&引用函数,在数组前加上@
? aa &&函数的返回值
? a(1),a(2),a(3),a(4),a(5) &&传递后的数组值
func ttt
para b(5)
b(1)=1+b(1)
b(2)=3+b(2)
return "OK"
func 定义的的就是一个函数。你可以在自定义函数或过程中使用数组,但是系统函数并不是都支持数组引用的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询