2011-07-19 154 views
1

我想拿到钥匙,将XML的价值属性,使用随附的VB脚本代码VBScript运行时错误91

<configuration> 
    <appSettings> 
    <add key="DeviceConnectionPortNumber" value="5002"/> 
    <add key="VirtualWintalkConnectionPortNumber" value="5100"/> 
    </appSettings> 
</configuration> 

每当我设置没有在VB脚本代码的对象,我得到的跟随错误。我使用Microsoft Word的宏特性开发了VBScript。我将在ASP中使用这个VBScript代码。我该如何解决这个问题?

运行时错误91: 对象变量或未设置块变量。

Sub Manu_Parse() 

Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 
objXMLDoc.Load ("c:\Web.Config.xml") 

Set appSettingsNode = objXMLDoc.documentElement.FirstChild 
Set parameterNodes = appSettingsNode.ChildNodes 
For Each parameterNode In parameterNodes 
    keyName = parameterNode.getAttribute("key") 
    If keyName = "DeviceConnectionPortNumber" Then 
     keyVal = parameterNode.getAttribute("value") 
     parameterNode = Nothing 
     Exit For 
    End If 
    parameterNode = Nothing 
Next 
parameterNodes = Nothing 
sappSettingsNode = Nothing 
objXMLDoc = Nothing 
End Sub 

回答

1

这是一段时间,因为我已经使用VBScript搞砸,但我愿意是你不能改变一个由“对于每一个”循环提供给您的枚举值。在.NET中它是一样的。

UPDATE:

是啊,我生疏了,需要 “设置” 要设置为Nothing对象之前。

尝试......

Sub Manu_Parse() 
    Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
    objXMLDoc.async = False 
    objXMLDoc.Load ("c:\Web.Config.xml") 

    Set appSettingsNode = objXMLDoc.documentElement.FirstChild 
    Set parameterNodes = appSettingsNode.ChildNodes 

    For Each parameterNode In parameterNodes 
     keyName = parameterNode.getAttribute("key") 
     If keyName = "DeviceConnectionPortNumber" Then 
      keyVal = parameterNode.getAttribute("value") 
      'parameterNode = Nothing 
      Exit For 
     End If 
     'parameterNode = Nothing 
    Next 

    Set parameterNodes = Nothing 
    Set sappSettingsNode = Nothing 
    Set objXMLDoc = Nothing 
End Sub 
+0

你为什么注释掉parameterNode =在for循环没什么。我认为这会导致内存泄漏 – Maanu

+0

这是我的第一次努力(请参阅我的更新之前的评论)。你可能会也可能不会在你的代码中设置parameterNode = Nothing而离开(即未注释)。就像我说的,我很生疏,我没有环境来检验我的建议。就内存泄漏而言,本身不会有内存泄漏。垃圾收集器将照顾它。另一方面,像你一直在做的那样清理未使用的对象是一种很好的编程习惯。保持。再次,我不确定我注释的代码行是否正确。在.NET中,这是无法完成的。 – Alban