51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3581|回复: 10
打印 上一主题 下一主题

自定义函数的问题(版主请进)[已解决]

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-11-4 10:06:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在自定义函数时,如果想写个带可选参数的函数,那要怎么写?
比如 obj_get_text("aa",text,[x1,y1,x2,y2])方括号中一样,怎么写才能有这样效果.

[ 本帖最后由 学会洒脱 于 2008-11-6 13:06 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-11-4 13:27:56 | 只看该作者
总结下:TSL语言是否支持自定义函数能够使用可选参数
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-11-4 13:49:52 | 只看该作者
好象不行的,不过QTP中有人用类解决了可选参数这个问题
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-11-4 14:39:49 | 只看该作者
用类来解决?是编上DLL吗?怎么解决的呢?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-11-4 15:27:47 | 只看该作者
Class AddNew
                Dim para1,para2,para3
                Sub Class_Initialize
                        para1 = 1
                        para2 = 2
                        para3 = 3
                End Sub

                Sub setPara1(byval para)
                        para1 = para
                End Sub

                Sub setPara2(byval para)
                        para2 = para
                End Sub

                Sub DoAdd()
                        msgbox "para1=[" & para1 & "] para2=[" & para2 & "] para3=[" & para3 & "]"
                End Sub

        End Class

        Set Customer = new AddNew
        Customer.DoAdd()
        Customer.setPara1(111)
        Customer.DoAdd()
        Customer.setPara2(222)
        Customer.DoAdd()
        Set Customer = nothing
这个是别人那拷过来的,好象能稍微变向的解决下问题,这个是在QTP中的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-11-4 15:55:51 | 只看该作者
仔细看了下.这个MS跟自定义函数...是否允许自定义函数使用可选参数没什么共通性啊....

dabie帮我解释下...谢谢哈..
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-11-4 16:23:40 | 只看该作者
para好比自定义函数的参数
doadd就好比你要自定义的函数
.setpara为要传递的参数设置其值,需要几个参数就设置几个,这样就有点变向的实现了自定义函数的参数个书可选
设置好参数后用该类方法doadd(自定义函数),这样就基本能实现自定义函数参数可选,但实际应用的时候参数初始值的不同实际达到的效果也各不相同,具体估计要增加很多的判断

这是我个人对这段代码的理解
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-11-4 16:52:38 | 只看该作者
例:
obj_get_text("aa",text,[x1,y1,x2,y2]);获取坐标范围内的text文本
obj_get_text("aa",text);获取aa控件的text文本

同一个obj_get_text函数,根据需要带不同个数的参数.

dabie , 我想要的是写好函数后,某个参数想用就用,想不用就不用,但函数里面肯定是写好的.但就是不知道支持这样的应该怎么写?

谢谢你的关注,你的回答给了我其他方面的参考,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-11-4 17:33:01 | 只看该作者
Class AddNew
                Dim obj,text,x1,y1,x2,y2
                Sub Class_Initialize
                        obj = "aa"
                        text = "text"
                        x1 = 0
                        y1=0
                        x2=0
                        y2=0
                End Sub

                Sub setPara1(byval objactual)
                        obj = objactual
                End Sub

                Sub setPara2(byval textactual)
                        text = textactual
                End Sub

                //x1,x2,y1,y2的设置函数同样写
           Sub setx1(byval x1actual)
                        x1= x1actual
                End Sub

                Sub DoAdd()
                        msgbox "obj=[" & obj& "] text=[" & text& "] x1=[" & x1 & "]"
                End Sub

        End Class

        Set Customer = new AddNew
        Customer.setPara1("aa")
        Customer.setPara2("text")
        Customer.DoAdd()
        Set Customer = nothing

        如果要传x1,x2等则增加
    customer.setx1();
        customer.setx2()等函数,并在Customer.DoAdd()前设置其值
     想用x1,y1等就设置下,不想用就不设置,使用默认的初始值,所以默认的初始值设置是需要考虑的,
不知道这样是否能理解
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-11-4 21:24:04 | 只看该作者
WR是可以编写带参数的自定义function,但是如果参数不用的话最好赋一个默认值吧
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-11-6 12:59:36 | 只看该作者
dabie的方法可能有用,但我现在接触QTP不多,理解不深

这两天翻WR的库函数,总算有所收获

在函数里增加以下代码就可以实现自定义函数的功能f (nargs() == 2)
    click_offset = LIST_DEFAULT_CLICK_LOCATION;
  else if (nargs() != 3)
      return(report_param_msg());
这段代码的意思是我想解释下,但发觉小弟我的语言水平太差,怕一解释大家看得更累,还是自己看比较清晰点.

如有什么问题,欢迎跟我讨论...
新建自动化交流群(1361827),欢迎高手加入

[ 本帖最后由 学会洒脱 于 2008-11-6 13:04 编辑 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-25 08:24 , Processed in 0.091099 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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