
在VFP中如何将数组传递给自定义函数
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
定义的的就是一个函数。你可以在自定义函数或过程中使用数组,但是系统函数并不是都支持数组引用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询