2011-07-19 155 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