onlonely 发表于 2009-5-22 16:11:32

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

QTP不支持可选参数么?
如下面的函数在QTP里面是不能使用的
Function exist_user(username,password,options userui)
end function

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

[ 本帖最后由 onlonely 于 2009-6-4 10:06 编辑 ]

mythxhg 发表于 2009-5-22 16:31:56

我也想知道,不过我的实践结果告诉我好象是不行.

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

如VC void func(CString bVar = FALSE ) ,vbs怎么表述啊

shanxi 发表于 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 编辑 ]

onlonely 发表于 2009-5-22 17:01:46

回复 3# 的帖子

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

这个方法不行..........

manhong 发表于 2009-5-22 17:30:50

Function exist_user(username,password,options userui)
end function
这么写有意义吗?
目的是啥呢

hsjzfling 发表于 2009-5-22 19:06:50

VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。

onlonely 发表于 2009-5-29 22:13:02

回复 5# 的帖子

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

heqingbluesky 发表于 2009-5-31 16:16:27

原帖由 hsjzfling 于 2009-5-22 19:06 发表 http://bbs.51testing.com/images/common/back.gif
VBS是不支持直接使用可选参数的。不过你可以写个Class来实现可选参数的功能。

哦,改天要试试。

manhong 发表于 2009-5-31 16:27:02

用vbs类吧

onlonely 发表于 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

hsjzfling 发表于 2009-6-4 12:21:38

LZ能做个示例么

比如要给函数a传两个参数"ABC","DEF":lol

onlonely 发表于 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?

lizhen521518 发表于 2010-4-30 12:03:36

按照您说的方法,但是我得到怎么都是第一个的值呢。
页: [1]
查看完整版本: QTP自编函数不支持可选参数么[已解决]