51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3093|回复: 12
打印 上一主题 下一主题

[原创] QTP自编函数不支持可选参数么[已解决]

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-22 16:11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QTP不支持可选参数么?
如下面的函数在QTP里面是不能使用的
Function exist_user(username,password,options userui)
end function


结果请看后面回复,想了好久...

[ 本帖最后由 onlonely 于 2009-6-4 10:06 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-22 16:31:56 | 只看该作者
我也想知道,不过我的实践结果告诉我好象是不行.

有高手知道的话不要吝啬啊,到底VBS能不能象VC那样,参数可以使用默认值呢?

如VC void func(CString bVar = FALSE ) ,vbs怎么表述啊
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-5-22 16:41:16 | 只看该作者

可选参数?

如果VBS自身的Feature不支持

你试试VBS能不能模拟C++中 printf的定义。
C++中printf是这样定义的:
void va_start(va_list ap, last);
type va_arg(va_list ap, type);
void va_end(va_list ap);

va_list args; //声明变量
va_start(args, fmt); //开始解析。args指向fmt后面的参数
TYPE var = va_arg(args, TYPE); //取下一个参数并返回。args指向下一个参数
va_end(args); //结束解析
http://blog.chinaunix.net/u2/68938/showart_726427.html

VB看参考一下 http://blog.csdn.net/smallboy_5/archive/2008/10/21/3118349.aspx

[ 本帖最后由 shanxi 于 2009-5-22 16:48 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-5-22 17:01:46 | 只看该作者

回复 3# 的帖子

VB看参考一下 [url=http://blog.csdn.net/smallboy_5/archive/2008/10/21/3118349.aspx
http://blog.csdn.net/smallboy_5/archive/2008/10/21/3118349.aspx[/quote[/url]]

这个方法不行..........
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-22 17:30:50 | 只看该作者
Function exist_user(username,password,options userui)
end function
这么写有意义吗?
目的是啥呢
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-22 19:06:50 | 只看该作者
VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-5-29 22:13:02 | 只看该作者

回复 5# 的帖子

Function exist_user(username,password,options userui)
...更多内容可以写这里面.....
end function
这个是一个函数的缩写啊.
我问题的关键在参数如何做到可选.
如上面这个函数,我可以使用0个参数,1个参数,2个参数,3个参数来调用这个函数.
我的目的就是如此.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-5-31 16:16:27 | 只看该作者
原帖由 hsjzfling 于 2009-5-22 19:06 发表
VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。


哦,改天要试试。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-5-31 16:27:02 | 只看该作者
用vbs类吧
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2009-6-4 10:04:15 | 只看该作者

回复 9# 的帖子

经过一段时间的思考,总结一种方法!先看下面函数
Function Output_SplitString(Split_String,Select_Num)
   Split_String="0,"&Split_String
     Tmp_Array=Split(Split_String,",")   
     Tmp_Array(0)=Ubound(Tmp_Array)+1
     Output_SplitString=Tmp_Array(Select_Num)
End Function

如果我们要使用可选参数,就

function a(string) '输入的参数用字符串,逗号隔开,如"参数1,参数2,参数3"
num=Output_SplitString(string,0)
if num=2 then
'如果参数为2个的时候使用的语句放这里
end if
if num=3 then
'如果参数为3个的时候使用的语句放这里
end if
end function
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-6-4 12:21:38 | 只看该作者
LZ能做个示例么

比如要给函数a传两个参数"ABC","DEF"
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2009-6-6 08:15:37 | 只看该作者

回复 11# 的帖子

首先这个函数是这个方法的主要功能函数,作用是把输入的字符串分割成一个数组,并根据其中Select_Num返回选择的参数,
Function Output_SplitString(Split_String,Select_Num)
   Split_String="0,"&Split_String
     Tmp_Array=Split(Split_String,",")   
     Tmp_Array(0)=Ubound(Tmp_Array)+1
     Output_SplitString=Tmp_Array(Select_Num)
End Function

然后使用时参数用字符串传递,如这样:
a("参数1,参数2,参数3")
注意传递的是一个参数,但是这个参数是一个字符串,参数之间用逗号隔开,并且是英文逗号.
然后,这个函数里面要使用我上面的那个函数.
如:

function a(string)
parameter1=Output_SplitString(string,1)
'string里面存放输入参数的字符串,后面的数字表示第几个参数
end function


Do you understand?
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-4-30 12:03:36 | 只看该作者
按照您说的方法,但是我得到怎么都是第一个的值呢。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 16:59 , Processed in 0.067968 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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