EDOMParseError Список кодов ошибок

Где я могу найти список EDOMParseError.ErrorCode ценности?

Я не могу найти его в источнике Delphi или в MSDN.

Например, если я установлю XMLDocument.FileName неправильный URL, у меня есть

Error code: -2146697210
Reason:  System error: -2146697210

Где эти коды определены?

2 ответа

Решение

При использовании MSXML в качестве поставщика DOM для TXMLDocument, EDOMParseError.ErrorCode значение COM HRESULT значение (MSXML реализован в виде COM-объектов). Нет единого источника, который документировал бы все возможные HRESULT ценности. Разные модули могут определять свои собственные HRESULT ценности.

В этом случае -2146697210 (гекс 0x800C0006) INET_E_OBJECT_NOT_FOUND (Объект не был найден):

#define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(0x800C0006L)      

Это переводит на HRESULT определяется через MAKE_HRESULT() макрос с серьезностью SEVERITY_ERROR объект FACILITY_INTERNET и код ошибки 6:

#define INET_E_OBJECT_NOT_FOUND          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_INTERNET, 6)

Этот конкретный HESULT значение задокументировано в кодах ошибок URL Moniker. Все HRESULT значения с возможностью FACILITY_INTERNET принадлежат библиотеке WinInet, в которую входит модуль UrlMon. MSXML использует WinInet для загрузки удаленного контента.

Как указано в Причины, эта ошибка исходит от вашей системы.

SysErrorMessage(ErrorCode)

Должен делать то, что вы хотите.

Вызывайте SysErrorMessage, только если ошибка поступает из системы. Но теперь вам нужно выяснить, как это узнать. Проверка причины как это возможно

if reason.StartsWith('System Error') then
    errorMessage := SysErrorMessage(errorCode);

Но, кажется, плохо так делать (зависит ли это от языковых настроек Windows?...)

Другие вопросы по тегам