【问题标题】:Alternative to TXMLDocument?TXMLDocument 的替代品?
【发布时间】:2012-10-05 17:08:12
【问题描述】:

最近我们将代码从 Delphi 2009 升级到 Delphi XE 并更新了我们的 Indy 组件(不确定这是否相关)。

但从那时起,我们在 Windows Server 2003 机器上加载和保存 XML 文件时出现错误。

XMLDoc.LoadFromFile()
XMLDoc.SaveToFile()

与其他操作系统上的超过 600kb 相比,Windows Server 2003 上的 DLL msvcrt.dll 小得多(300kb 左右)...因此它在该文件中缺少某些内容并导致错误...

有谁知道如何解决这个问题?或者我可以试试TXMLDocument 的替代品吗?

【问题讨论】:

  • 看看 NativeXML 或 OmniXML 解析器
  • 你有没有弄清楚为什么要引用那个浮点相关的函数?听起来您需要提交质控报告。
  • 在依赖 Microsoft XML 运行时的应用程序中经常发生这种情况。拥有旧版本的 MS XML 会导致这种情况。在 Windows 2003 服务器上发生这种情况的事实向我表明,您应该在那里检查您的 MS XML 并对其进行升级。然而,由于这种废话让我很生气,我已经删除了所有 MSXML 的使用,我不再担心 MS XML。我使用 OmniXML。
  • msvcrt.dll 带有 ms visual c++ 运行时 Redistributable,因此安装适当的 retributable 比仅包含 dll 更好。使用 retributable 也遵守 microsoft 许可。
  • @Trevor 您的更新应该是一个新问题。请还原此问题并提出新问题。

标签: delphi dll delphi-xe txmldocument


【解决方案1】:

要回答最后一部分(“有替代方案吗?”),您可能需要查看 Jedi Code Library 的 TJclSimpleXML 课程。它不需要任何外部 DLL,速度非常快,而且非常易于使用。此外,如果你在 Delphi 中编码,现在 JCL 和 JVCL 是必不可少的。

http://wiki.delphi-jedi.org/wiki/JEDI_Code_Library 我相信是他们的页面。我听说在西雅图,您可以通过 IDE 集成包管理器获得它。

【讨论】:

    【解决方案2】:

    msvcrt.dll 是 Microsoft Visual C++ 运行时的(一部分)。我认为您有一个不包含此功能的此运行时的较旧(甚至可能是较新)版本。

    现在您必须找出调用此函数的位置。您是否将 obj 文件与您的项目链接或使用(其他)第 3 方 dll?

    【讨论】:

      【解决方案3】:

      默认情况下,TXMLDocument/IXMLDocument 在 Windows 平台上运行时只是 MSXML COM 接口的包装。 TXMLDocument 和 Indy 都没有使用 _ftol2_sse() 函数,甚至没有链接到 msvcrt.dll。您项目中的其他问题有问题。

      【讨论】:

      • 好吧,我使用 show messages 来追踪错误发生的位置,并且在 XMLDoc.LoadFromFile() 和 XMLDoc.SaveToFile() 期间都显示了相同的错误消息。现在是否有可能在这些行之前发生此错误并且直到那时才出现?
      • 我无法访问可以在其上调试代码的 Windows 2003 服务器。你对我如何追踪调用 _ftol2_sse 有什么建议吗?
      • 好的,所以你的权利我确定 XMLDoc.LoadFromFile() XMLDoc.SaveToFile() 不一定是问题的原因我很难追查这个问题的位置和原因发生。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2012-01-25
      • 2015-08-05
      • 2011-01-01
      • 2011-10-24
      • 2011-05-31
      相关资源
      最近更新 更多