找回密码
 加入
搜索
查看: 7071|回复: 10

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

  [复制链接]
发表于 2010-9-17 16:16:50 | 显示全部楼层 |阅读模式
本帖最后由 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[1]                
                                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
是不是因为这个导致了错误啊?有什么解决方法,谢谢各位!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-18 00:16:26 | 显示全部楼层
不用GUISwitch
 楼主| 发表于 2010-9-18 08:19:22 | 显示全部楼层
回复 2# caodongchun

可是我要进行多窗体的操作,不用guiSwitch可以用其它的代替吗?您有没有什么好的办法啊?
发表于 2010-9-18 09:02:49 | 显示全部楼层
我的意思是首先去掉guiSwitch是否报错?
用GUISetState ( [flag [, winhandle]] )不可以吗?用的时候show,不用的时候hide

评分

参与人数 1金钱 +20 收起 理由
kinghu318 + 20 这样做也可以实现多窗体的操作

查看全部评分

 楼主| 发表于 2010-9-18 09:22:04 | 显示全部楼层
回复 4# caodongchun
我把guiSwitch都换成了guisetstate退出的时候还是报错误
 楼主| 发表于 2010-9-18 11:18:17 | 显示全部楼层
读取xml不使用ObjCreate("Microsoft.XMLDOM")这个对象行不行啊?有其它方法吗?
发表于 2010-9-18 22:06:14 | 显示全部楼层
不是很完整的代码无法运行和测试
Gui与obj有何联系?
 楼主| 发表于 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关闭的时候就报错
发表于 2010-9-19 09:49:51 | 显示全部楼层
本帖最后由 caodongchun 于 2010-9-19 09:52 编辑

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

评分

参与人数 1金钱 +20 收起 理由
kinghu318 + 20 非常谢谢,你的帮助

查看全部评分

 楼主| 发表于 2010-9-19 11:09:31 | 显示全部楼层
回复 9# caodongchun

谢谢caodongchun的帮忙,问题已经找到了,原来是和皮肤有关,关闭窗体的时候没有close掉皮肤,很奇怪我没操作xml之前同样没关闭皮肤的$DLL,但是没报错,操作xml之后就报错。。。让我以为是窗体的原因。。。总之,谢谢caodongchun。。。
发表于 2013-4-11 13:12:10 | 显示全部楼层
学习到了 知识
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 03:36 , Processed in 0.088796 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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