51Testing软件测试论坛

标题: QTP自编函数不支持可选参数么[已解决] [打印本页]

作者: onlonely    时间: 2009-5-22 16:11
标题: QTP自编函数不支持可选参数么[已解决]
QTP不支持可选参数么?
如下面的函数在QTP里面是不能使用的
Function exist_user(username,password,options userui)
end function


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

[ 本帖最后由 onlonely 于 2009-6-4 10:06 编辑 ]
作者: mythxhg    时间: 2009-5-22 16:31
我也想知道,不过我的实践结果告诉我好象是不行.

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

如VC void func(CString bVar = FALSE ) ,vbs怎么表述啊
作者: shanxi    时间: 2009-5-22 16:41
标题: 可选参数?
如果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 编辑 ]
作者: onlonely    时间: 2009-5-22 17:01
标题: 回复 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]]

这个方法不行..........
作者: manhong    时间: 2009-5-22 17:30
Function exist_user(username,password,options userui)
end function
这么写有意义吗?
目的是啥呢
作者: hsjzfling    时间: 2009-5-22 19:06
VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。
作者: onlonely    时间: 2009-5-29 22:13
标题: 回复 5# 的帖子
Function exist_user(username,password,options userui)
...更多内容可以写这里面.....
end function
这个是一个函数的缩写啊.
我问题的关键在参数如何做到可选.
如上面这个函数,我可以使用0个参数,1个参数,2个参数,3个参数来调用这个函数.
我的目的就是如此.
作者: heqingbluesky    时间: 2009-5-31 16:16
原帖由 hsjzfling 于 2009-5-22 19:06 发表
VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。


哦,改天要试试。
作者: manhong    时间: 2009-5-31 16:27
用vbs类吧
作者: onlonely    时间: 2009-6-4 10:04
标题: 回复 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

作者: hsjzfling    时间: 2009-6-4 12:21
LZ能做个示例么

比如要给函数a传两个参数"ABC","DEF"
作者: onlonely    时间: 2009-6-6 08:15
标题: 回复 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?
作者: lizhen521518    时间: 2010-4-30 12:03
按照您说的方法,但是我得到怎么都是第一个的值呢。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2