kinghu318 发表于 2010-9-17 16:16:50

使用ObjCreate("Microsoft.XMLDOM")读取xml时,关闭窗体报错[已解决]

本帖最后由 kinghu318 于 2010-9-19 11:13 编辑

代码如下:$objXML = ObjCreate("Microsoft.XMLDOM")
        $sFile = $objXML.load($strSourceFile)
        if not $sFile then
                MsgBox(16,"错误","加载"&$strSourceFile&"失败,文件不存在!!!")
        Else
        $objRootsite = $objXML.documentElement.selectSingleNode("NewList")
        $AllNodesNum = $objRootsite.childNodes.length - 1
                if $AllNodesNum > 0 Then
                       For $i = 0 to $AllNodesNum
                               $id = $i+1
                               $na=$objRootsite.childNodes.item($i).attributes.getNamedItem("name").value
                               $ms=$objRootsite.childNodes.item($i).childNodes.item(2).text
关闭窗体的时候报这个错误。因为我现在是操作多窗体使用的隐藏窗体Case $GUI_EVENT_CLOSE
                        Switch $nMsg               
                                Case $WinMain            
                                        Exit                  
                                Case $SubForm               
                                        GUISwitch($SubForm)      
                                        GUISetState(@SW_HIDE)   
                                Case $subformBF
                                        GUISwitch($subformBF)
                                        GUISetState(@SW_HIDE)
                                Case $txform
                                        GUISwitch($txform)
                                        GUISetState(@SW_HIDE)
                        EndSwitch是不是因为这个导致了错误啊?有什么解决方法,谢谢各位!!!

caodongchun 发表于 2010-9-18 00:16:26

不用GUISwitch

kinghu318 发表于 2010-9-18 08:19:22

回复 2# caodongchun

可是我要进行多窗体的操作,不用guiSwitch可以用其它的代替吗?您有没有什么好的办法啊?

caodongchun 发表于 2010-9-18 09:02:49

我的意思是首先去掉guiSwitch是否报错?
用GUISetState ( ] )不可以吗?用的时候show,不用的时候hide

kinghu318 发表于 2010-9-18 09:22:04

回复 4# caodongchun
我把guiSwitch都换成了guisetstate退出的时候还是报错误

kinghu318 发表于 2010-9-18 11:18:17

读取xml不使用ObjCreate("Microsoft.XMLDOM")这个对象行不行啊?有其它方法吗?

caodongchun 发表于 2010-9-18 22:06:14

不是很完整的代码无法运行和测试
Gui与obj有何联系?

kinghu318 发表于 2010-9-19 09:33:22

回复 7# caodongchun ;写入xml
Func A_xml($time,$mess,$wavtype,$txCs,$wavfile);添加记录函数
        $brstr= chr(13)&chr(10)&chr(9)
        $objXML = ObjCreate("Microsoft.XMLDOM");创建XML对像
        $sFile = $objXML.load("Contacts.xml");把XML文件读入内存中
        if not $sFile then
                MsgBox(16,"错 误","加载"&"Contacts.xml"&"失败,文件不存在!!!")
                Return
        EndIf
        $objRootlist = $objXML.documentElement.selectSingleNode("NewList");选取<NewList>节点
        $XMLnode = $brstr&"<list name='"&$time&"'>"&$brstr&"<mess>"&$mess&"</mess>"&$brstr& _
        "<wavtype>"&$wavtype&"</wavtype>"&$brstr&"<txCs>"&$txCs&"</txCs>"&$brstr& _
        "<wavfile>"&$wavfile&"</wavfile>"&$brstr&"</list>"&chr(13)
        $objXML2= ObjCreate("Microsoft.XMLDOM");建立一个新XML对像
        $objXML2.loadXML($XMLnode);把XML版片段读入内存中
        $rootNewNode=$objXML2.documentElement;获得objXML2的根节点
        $objRootlist.appendChild($rootNewNode);把XML片段插入到xml中
        $objXML.save("Contacts.xml");存储xml文件(因为不存储xml只在内存中更新了)
        $objXML=0
EndFunc这个是我调用的写入的方法,我测试了一下,只要我操作xml关闭的时候就报错

caodongchun 发表于 2010-9-19 09:49:51

本帖最后由 caodongchun 于 2010-9-19 09:52 编辑

只要我操作xml关闭的时候就报错?
关闭窗体的时候?还是关闭obj的时候?
还有一点$objXML2最后没有赋予0值?
如果关闭窗体时报错请考虑做flag,当操作时flag值不允许关闭窗体,操作完毕flag才允许关闭窗体

kinghu318 发表于 2010-9-19 11:09:31

回复 9# caodongchun

谢谢caodongchun的帮忙,问题已经找到了,原来是和皮肤有关,关闭窗体的时候没有close掉皮肤,很奇怪我没操作xml之前同样没关闭皮肤的$DLL,但是没报错,操作xml之后就报错。。。让我以为是窗体的原因。。。总之,谢谢caodongchun。。。

feitn 发表于 2013-4-11 13:12:10

学习到了 知识
页: [1]
查看完整版本: 使用ObjCreate("Microsoft.XMLDOM")读取xml时,关闭窗体报错[已解决]