Странная проблема —
load() и
save() в
IXMLDOMDocument не работает с файлами на диске.
И если
load() еще пережить можно (читаем, конвертируем в WCHAR и скармливаем в
loadXML()), то вот без
save() — никак

.
Причем при вызове данных методов внутри возникает исключение:
First-chance exception at 0x77e738b2 in XXX.exe: 0xE0000001: 0xe0000001.
Кто-нибудь сталкивался с такой проблемой?
Код сохранения, на всякий случай:
void eXMLDoc::Save(const char* pszFileName) const
{
VARIANT vbstr;
VariantInit(&vbstr);
V_BSTR(&vbstr) = eString::ConvertToBSTR(pszFileName);
V_VT(&vbstr) = VT_BSTR;
HRESULT hr = m_pICOMDoc->save(vbstr);
e_assert(SUCCEEDED(hr));
}
Гм, называется — хрен угадаешь...
Смысл ошибки в том, что в функции в качестве параметра строки можно подавать только строки по адресам, выделенным при помощи функций
SysAllocString*().
Т.е. это работает на ура:
void eXMLDoc::Save(const char* pszFileName) const
{
VARIANT vbstr;
VariantInit(&vbstr);
V_BSTR(&vbstr) = SysAllocString(L"JustTest.xml");
V_VT(&vbstr) = VT_BSTR;
HRESULT hr = m_pICOMDoc->save(vbstr);
e_assert(SUCCEEDED(hr));
Сорри за дурацкий вопрос...
ssm>смысл в том, что нужно пользоваться обертками над BSTR : _bstr_, CComBSTR и не парить себе мозги
угу. только сначала нужно подключить к проекту миллион хидеров и столкнуться с некомпиляцией проекта, который в разработке уже 3 года
сейчас уже поздно...
Здравствуйте, Аноним, Вы писали:
А>угу. только сначала нужно подключить к проекту миллион хидеров и столкнуться с некомпиляцией проекта, который в разработке уже 3 года
А>
если используется import то все уже подключено. если ATL, то atlcomcli.h помоему
tckb