51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2453|回复: 7
打印 上一主题 下一主题

[原创] 请教高手!调用函数时,怎么返回多个值?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-12-28 15:31:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;四个值!谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-12-28 15:51:37 | 只看该作者
函数的返回值只可能是一个
解决问题的办法在于你用什么类型的返回值来实现
建议你把一个数组做为入参传进去
然后把需要返回的值都写到数组里面去
调用完毕后
再从这个数组中取出你需要的值
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-12-28 15:56:18 | 只看该作者
我的办法是在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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-12-28 16:29:02 | 只看该作者
解决问题的办法在于你用什么类型的返回值来实现
建议你把一个数组做为入参传进去
然后把需要返回的值都写到数组里面去
调用完毕后
再从这个数组中取出你需要的值 [/quote]

谢谢你们!
风过无息:的办法是可行的,但是取会以后要重新解析数据,有点麻烦,
能不能给我说一下用数组怎样作为参数写进去。谢谢

[ 本帖最后由 wonew1228 于 2006-12-28 16:31 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-12-28 17:02:18 | 只看该作者
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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-12-28 17:26:56 | 只看该作者
方法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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-12-28 17:33:49 | 只看该作者
老大
你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就不需要在返回什么变量了
不是吗?!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-12-28 18:07:45 | 只看该作者

楼上这位朋友说的很清楚了
其实可以不用带参数进去就直接返回数组的
我之前还以为返回数组就是返回局部地址
所以建议带参数进去
呵呵
C写多了都晕了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-10-8 10:49 , Processed in 0.085878 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表