【问题标题】:new TXMLDocument in Borland C++ BuilderBorland C++ Builder 中的新 TXMLDocument
【发布时间】:2010-09-25 20:59:58
【问题描述】:

我可以在 Borland C++ Builder 中自己创建和销毁 TXMLDocument 吗?我已经尝试过,但 borland 一直告诉我 TXMLDocument 是(并且必须是)IDE 托管组件。

另外,我想这样做的唯一原因是 TXMLDocument 有点崩溃:我得到 TXMLDocument 并从中“获取”一个工作簿,设置一些文档属性(xml 稍后保存为 Excel 文件) ,并且我添加了一些样式。好的,然后我添加一个工作表,然后添加我想要的具有正确格式的所有单元格,然后保存它。此时一切正常。

然后我想保存另一个 Excel 文件。由于 IDE 不允许我删除并重新创建 TXMLDocument,我尝试仅删除它的工作表。当我尝试这个(在调试模式下)时,IDE 在 CPU 选项卡中进入行步模式(显示一些汇编程序):

ntdll.DbgBreakPoint:
77A07DFE CC               int 3
77A07DFF C3               ret

【问题讨论】:

    标签: c++builder txmldocument


    【解决方案1】:

    你需要这样做:

    _di_IXMLDocument Doc = NewXMLDocument(); 
    

    我不记得为什么的血淋淋的细节,但这应该会为你指明正确的方向。

    在 Codegear 网站here 上有更多信息。

    【讨论】:

    • Oookay...不太确定我会用 _di_IXMLDocument 做什么...这似乎是 TXMLDocument 中的另一种类型的对象?
    • 是接口类型。正如文章所说,当您为 TXMLDocument 组件指定空所有者时,该类的行为就像一个引用计数接口。
    【解决方案2】:

    试试这个:

    #include <oxmldom.hpp>
    #include <XMLDoc.hpp>
    #include <xmldom.hpp>
    #include <XMLIntf.hpp>
    
    
      try
      {
       CoInitialize(0);
       _di_IXMLDocument xmlDoc;
        xmlDoc = LoadXMLData( s1 );
       s1 = xmlDoc->XML->Text;
       CoUninitialize();
       mylog( Fun + String::Format( "ANSW-MSG-XML %s ", ARRAYOFCONST(( s1 ))));
      }
      catch ( Exception & ex )
      {
       mylog( Fun + String::Format( "PARSEXML:ERRORE %s \nmsg:%s",
          ARRAYOFCONST(( ex.Message, cmdMsg ))));
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2014-12-10
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多