51Testing软件测试论坛
标题:
请教高手!调用函数时,怎么返回多个值?
[打印本页]
作者:
wonew1228
时间:
2006-12-28 15:31
标题:
请教高手!调用函数时,怎么返回多个值?
public function fun1(x,y)
{
static x;
static y;
static jia;
static jian;
static cheng;
static chu;
jia= x + y;
jian =x-y;
cheng = x *y;
chu = x/y;
}
脚本2;
call " ..\\xxxx\\xxxx "();
function fun1(10,2);
call_close" ..\\xxxx\\xxxx "();
请教各位,我怎么在 脚本2中一次得到jia; jian; cheng; chu;四个值!谢谢
作者:
hiyizhiyu
时间:
2006-12-28 15:51
函数的返回值只可能是一个
解决问题的办法在于你用什么类型的返回值来实现
建议你把一个数组做为入参传进去
然后把需要返回的值都写到数组里面去
调用完毕后
再从这个数组中取出你需要的值
作者:
风过无息
时间:
2006-12-28 15:56
我的办法是在function 里面直接把值放到datatable里面,不知道有没有别的好办法。
用楼上的办法:
Function fun1(x,y)
jia= x+y
jian =x-y
cheng =x*y
chu =x/y
fun1=jia&" "&jian&" "&cheng&" "&chu
End Function
aa= fun1(10,2)
msgbox(aa)
剩下就是截取字符的工作了,你可以参照
http://blog.51testing.com/?3528/action_viewspace_itemid_1339.html
[
本帖最后由 风过无息 于 2006-12-28 16:05 编辑
]
作者:
wonew1228
时间:
2006-12-28 16:29
解决问题的办法在于你用什么类型的返回值来实现
建议你把一个数组做为入参传进去
然后把需要返回的值都写到数组里面去
调用完毕后
再从这个数组中取出你需要的值 [/quote]
谢谢你们!
风过无息:的办法是可行的,但是取会以后要重新解析数据,有点麻烦,
能不能给我说一下用数组怎样作为参数写进去。谢谢
[
本帖最后由 wonew1228 于 2006-12-28 16:31 编辑
]
作者:
wonew1228
时间:
2006-12-28 17:02
public shuzu[]={" "," "," "," "};
call "D:\\xyb\\winrunner\\sedscs\\hanshufanhuiduozhi"();
aa=fun1(10,2,shuzu[3]);
for(i=1;i<3;i++)
{
pause(shuzu
);
}
call_close "D:\\xyb\\winrunner\\sedscs\\hanshufanhuiduozhi"();
public function fun1(x,y,a[3])
{
static jia;
static jian;
static cheng;
static chu;
jia= x + y;
jian =x-y;
cheng = x *y;
chu = x/y;
a[]={"jia","jian","cheng","chu"};
#a=jia&"#"&jian &"#"&cheng&"#"&chu;
return a{3];
}
这样做调试不对,高手给看看我错在那了?
[
本帖最后由 wonew1228 于 2006-12-28 17:38 编辑
]
作者:
风过无息
时间:
2006-12-28 17:26
方法1
Function fun1(x,y)
jia= x+y
jian =x-y
cheng =x*y
chu =x/y
fun1=Array(jia,jian,cheng,chu)
End Function
Ans= fun1(10,2)
MsgBox "答案分别是" & Ans(0) & "," & Ans(1) & "," & Ans(2) & "," & Ans(3)
-----------------------------------
方法2
Private Sub Command1_Click()
MyReturn 5, 6, Ans1, Ans2 ,Ans3 ,Ans4
MsgBox "答案分别是" & Ans1 & "," & Ans2 & "," & Ans3 & "," & Ans4
End Sub
Private Function MyReturn(X, Y, A, B, C, D)
A = X + Y
B = X - Y
C = X * Y
D = X / Y
End Function
[
本帖最后由 风过无息 于 2006-12-28 18:00 编辑
]
作者:
hiyizhiyu
时间:
2006-12-28 17:33
老大
你function的入参只有两个
但调用的时候有三个
当然不行了
做了一个简单的例子
不知道能不能满足你的需求
try:
Dim arrayNum(2)
Call h(arrayNum)
msgbox arrayNum(0)
msgbox arrayNum(1)
Function h(arrayNum)
arrayNum(0) = 1
arrayNum(1) = 2
End Function
其实你如果已经传进去了一个数组用来记录返回值的话
那么你的function就不需要在返回什么变量了
不是吗?!
作者:
hiyizhiyu
时间:
2006-12-28 18:07
恩
楼上这位朋友说的很清楚了
其实可以不用带参数进去就直接返回数组的
我之前还以为返回数组就是返回局部地址
所以建议带参数进去
呵呵
C写多了都晕了
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2