我在哪里可以找到EDOMParseError.ErrorCode
值列表?
我无法在Delphi源代码或MSDN中找到它。
例如,如果我将XMLDocument.FileName
设置为不正确的网址,我已经
Error code: -2146697210
Reason: System error: -2146697210
这些代码是在哪里定义的?
答案 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语言设置吗?...)