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