EDOMParseError ErrorCode列表

时间:2016-04-11 14:53:49

标签: delphi xml-parsing txmldocument

我在哪里可以找到EDOMParseError.ErrorCode值列表?

我无法在Delphi源代码或MSDN中找到它。

例如,如果我将XMLDocument.FileName设置为不正确的网址,我已经

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

这些代码是在哪里定义的?

2 个答案:

答案 0 :(得分:2)

当使用MSXML作为TXMLDocument的DOM提供程序时,EDOMParseError.ErrorCode值是COM HRESULT值(MSXML实现为COM对象)。没有单一来源记录所有可能的HRESULT值。允许不同的模块定义自己的自定义HRESULT值。

在这种情况下,-2146697210(十六进制0x800C0006)为INET_E_OBJECT_NOT_FOUND(找不到该对象):

#define INET_E_OBJECT_NOT_FOUND          _HRESULT_TYPEDEF_(0x800C0006L)      

这转换为通过MAKE_HRESULT()宏定义的HRESULT,其严重性为SEVERITY_ERROR,设施为FACILITY_INTERNET,错误代码为6:

#define INET_E_OBJECT_NOT_FOUND          MAKE_HRESULT(SEVERITY_ERROR, FACILITY_INTERNET, 6)

URL Moniker Error Codes中记录了此特定HESULT值。设施为HRESULT的所有FACILITY_INTERNET值都属于WinInet库,其中包含UrlMon模块。 MSXML在内部使用WinInet下载远程内容。

答案 1 :(得分:0)

如原因所述,此错误来自您的系统。

SysErrorMessage(ErrorCode)

应该做你想做的事。

仅当错误来自系统时才调用SysErrorMessage。但现在你需要弄清楚如何知道这一点。检查这样的原因是可能的

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

但这样做似乎很糟糕(它取决于Windows语言设置吗?...)