Рейтинг:
7
User 7429338
Проверьте информацию об ошибке, предоставленную при load()
неудачи:
if (loadXML->load(variant_t(_T("Style.xsl"))) == VARIANT_FALSE)
{
IXMLDOMParseErrorPtr errPtr = loadXML->GetparseError();
_bstr_t bstrErr(errPtr->reason);
printf("Error:\n");
printf("Code = 0x%x\n", errPtr->errorCode);
printf("Source = Line : %ld; Char : %ld\n", errPtr->line, errPtr->linepos);
printf("Error Description = %s\n", (char*)bstrErr);
return false; // returning false some times
}
Member 13089825
номер строки исходного кода показывает пустоту
[no name]
Показывает ли он код ошибки? Значение кодов ошибок можно найти по адресу https://msdn.microsoft.com/en-us/library/jj134414(v=против 85).aspx
Рейтинг:
13
Jochen Arndt
Использование имени файла без пути может привести к сбою, если текущий рабочий каталог не совпадает с тем, что было при создании файла.
Чтобы узнать, что пошло не так, используйте IXMLDOMDocument::load[^] функция, которая принимает два параметра и возвращает HRESULT
который может быть использован для получения сообщения об ошибке.
Member 13089825
файл находится в том же каталоге
Jochen Arndt
Не файл должен находиться в "том же" каталоге (что бы это ни значило), а рабочий каталог должно быть то же самое. Поскольку это обычно невозможно контролировать, файлы всегда должны быть указаны с полным путем.
Однако что такое HRESULT при сбое загрузки?
Только это поможет вам выяснить, почему он терпит неудачу.
Member 13089825
HRESULT hr= loadXML->load(variant_t(Style.xsl")));
if (FAILED(hr))
{//как распечатать сведения об ошибке здесь
возвращать false;
}
не могли бы вы проверить это один раз
Jochen Arndt
Вы должны использовать версию из ссылки в моем ответе, используя второй параметр "VARIANT_BOOL* varIsSuccessful" или код из решения Таддеуса.
Если у вас есть код HRESULT, я могу дать вам определение ошибки и сообщение (по крайней мере, завтра, когда вернусь на работу, где у меня есть инструмент для этого).