51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2107|回复: 3
打印 上一主题 下一主题

[讨论] Function中包含递归的sub,运行出错?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-8-10 15:30:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:
Function ReadXMLvalue ( )
   Dim xmlDoc,myErr,strName
   strName="booker_ref_num"
   Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建xml文档对象
    xmlDoc.async = False    '关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
    xmlDoc.load  "c:\1.xml"    '告知解析器加载名为 "c:\1.xml" 的文档,或者 xmlDoc.load("c:\1.xml");
    If xmlDoc.parseError.errorCode <> 0 Then   
          Set myErr = xmlDoc.parseError
          MsgBox("XML Loads Failed. " & myErr.reason)
     Else
          Set rootNode = xmlDoc.documentElement
          Call rTravel(rootNode)
      End If

Sub rTravel (rNode)
           Dim blnTwo,childName
             blnTwo = False
             iLen = rNode.childNodes.length
             If iLen > 0 Then
                     For i = 0 To rNode.childNodes.length -1
                               Set child = rNode.childNodes.item(i)
                              Call rTravel(child)  
                              childName=child.nodeName   'Get the node name
                               If strName=childName then
                                      MsgBox childName
                                       childText = child.text                        
                                     MsgBox childText
                                     Exit Sub
                                 End if
                        Next
               Else
                   Exit Sub               
              End If
End Sub
End Function

函数功能是在c:\1.xml里面找到booker_ref_num的值,并msgbox 出来。
sub rTravel 是一个递归函数,用来查找xml 中booker_ref_num的值。
这段代码用VBS工具跑是没有任何问题的,但是在QTP包装成一个function,并在test 中call的时候老是提示语法错误。
请问在QTP中可以这样用吗,function中包含递归sub?
如果不能这么用的话,要怎样才能实现我想要的功能?谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-8-10 18:02:21 | 只看该作者
没人回复,自己顶上去...
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-8-10 18:14:35 | 只看该作者
你把sub主体写到function主体里了这样当然报错,这样写吧。。。
Sub rTravel (rNode)
           Dim blnTwo,childName
             blnTwo = False
             iLen = rNode.childNodes.length
             If iLen > 0 Then
                     For i = 0 To rNode.childNodes.length -1
                               Set child = rNode.childNodes.item(i)
                              Call rTravel(child)  
                              childName=child.nodeName   'Get the node name
                               If strName=childName then
                                      MsgBox childName
                                       childText = child.text                        
                                     MsgBox childText
                                     Exit Sub
                                 End if
                        Next
               Else
                   Exit Sub               
              End If
End Sub
Function ReadXMLvalue ( )
   Dim xmlDoc,myErr,strName
   strName="booker_ref_num"
   Set xmlDoc = CreateObject("Microsoft.XMLDOM") '创建xml文档对象
    xmlDoc.async = False    '关闭异步加载,这样可确保在文档完整加载之前,解析器不会继续执行脚本
    xmlDoc.load  "c:\1.xml"    '告知解析器加载名为 "c:\1.xml" 的文档,或者 xmlDoc.load("c:\1.xml");
    If xmlDoc.parseError.errorCode <> 0 Then   
          Set myErr = xmlDoc.parseError
          MsgBox("XML Loads Failed. " & myErr.reason)
     Else
          Set rootNode = xmlDoc.documentElement
          Call rTravel(rootNode)
      End If

call rTravel (rNode)

End Function
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-8-10 21:40:31 | 只看该作者
入行这么久,第一次见到这样带货的-.-!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-14 17:13 , Processed in 0.073294 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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