首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔福的TXMLDocument如何决定使用哪个TXMLDocument (3.0,6.0,甚至4.0)?

德尔福的TXMLDocument如何决定使用哪个TXMLDocument (3.0,6.0,甚至4.0)?
EN

Stack Overflow用户
提问于 2021-11-16 08:25:28
回答 1查看 197关注 0票数 2

我有一个用Delphi6编写的程序,它使用TXMLDocument,运行时使用MSXML3.0解析器。但是该程序在一台计算机上报告一个The specified module could not be found错误,而过程监视器报告该程序试图访问MSXML4.0模块和注册表项。此4.0安装不完整/损坏,这就是访问The specified module could not be found失败的原因。

因此,核心问题是一些机制/决策算法,使TXMLDocument 无法使用当前所有Windows 10机器上的标准MSXML3.0或MSXML6.0版本,并迫使 TXMLDocument 使用MSXML4.0版本。TXMLDocument 中的决策机制是什么?如何纠正?

当然,我可以在客户端计算机上找到、下载并安装MSXML4.0,但这似乎不是正确的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 09:25:52

这里没有神秘的魔法。众所周知,使用的是什么机制。您可以在Delphi的msxmldom.pas文件中看到自己的源代码。

TXMLDocument在Windows上使用MSXML DOMVendor时,它只是在一个循环中调用CoCreateInstance(),试图实例化MSXML的IXMLDOMDocument COM对象的不同版本的硬编码列表,按版本的顺序递减,直到一个版本最终成功,或者它们都失败了。

当Delphi 6发布时,MSXML6.0还不存在,所以它不是尝试过的版本。你还说MSXML4.0在你客户的系统上坏了。因此,MSXML3.0最终被使用是有意义的。

关于如何使TXMLDocument在这样一个旧的Delphi版本中使用MSXML6.0,请看以下问题:

如何在Delphi 7中使用MSXML6.0创建TXML文档?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69985876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档