首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量传递给MSXML中的IXMLDOMDocument::save方法?

如何将变量传递给MSXML中的IXMLDOMDocument::save方法?
EN

Stack Overflow用户
提问于 2014-01-01 21:07:47
回答 1查看 1.1K关注 0票数 0

所有人。我知道微软已经给出了这样一个关于IXMLDOMDocument的保存方法的例子:http://msdn.microsoft.com/en-us/library/windows/desktop/dd874226(v=vs.85).aspx

但是,当我将save的参数改为像CString或char*这样的变量而不是常量时,我在save方法中得到了类似这样的异常:"Unhandled exception in VisualADS.exe: 0xC0000005: Access Violation“。异常位置为:

代码语言:javascript
复制
#pragma implementation_key(76)
inline HRESULT MSXML2::IXMLDOMDocument::save ( const _variant_t & destination ) {
    HRESULT _hr = raw_save(destination);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}

这是Visual Studio6中的MFC MBCS项目,这是我的代码thx!

代码语言:javascript
复制
CString strFilePathName = ar.GetFile()->GetFilePath();
CComBSTR ccbsFilePathName(strFilePathName);
CComVariant ccvFilePathName(ccbsFilePathName);
hr = pXMLDoc->save(ccvFilePathName);
EN

回答 1

Stack Overflow用户

发布于 2014-01-02 04:06:50

传递给IXMLDOMDocument::save的变量必须带有BSTR。如果您的项目是UNICODE项目,那么您很有可能不需要进行转换,也没有理由使用奇怪的尝试来崩溃。

如果是在MBCS项目中,情况就不同了:在OLE/COM中使用文件名之前,必须以某种方式将文件名从MBCS转换为UNICODE。我建议使用CComBSTR类来完成此操作

代码语言:javascript
复制
CString strFilePathName;
[...]
CComBSTR ccbsFilePathName( strFilePathName );
CComVariant ccvFilePathName( ccbsFilePathName );
hr = pXMLDoc->save( ccvFilePathName );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20868948

复制
相关文章

相似问题

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