EDOM ParseError 错误代码列表
EDOMParseError ErrorCode list
在哪里可以找到 EDOMParseError.ErrorCode
值的列表?
我无法在 Delphi 源代码或 MSDN 中找到它。
例如,如果我将 XMLDocument.FileName
设置为不正确的 url,我得到
Error code: -2146697210
Reason: System error: -2146697210
这些代码是在哪里定义的?
如原因中所述,此错误来自您的系统。
SysErrorMessage(ErrorCode)
应该做你想做的。
仅当错误来自系统时才调用 SysErrorMessage。但现在你需要弄清楚如何知道这一点。可以这样检查原因
if reason.StartsWith('System Error') then
errorMessage := SysErrorMessage(errorCode);
但这样做似乎不太好(是否取决于 Windows 语言设置?...)
当使用 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)
这个特定的 HESULT
值记录在 URL Moniker Error Codes 中。所有具有 FACILITY_INTERNET
设施的 HRESULT
值都属于 WinInet 库,其中包括 UrlMon 模块。 MSXML 在内部使用 WinInet 下载远程内容。
在哪里可以找到 EDOMParseError.ErrorCode
值的列表?
我无法在 Delphi 源代码或 MSDN 中找到它。
例如,如果我将 XMLDocument.FileName
设置为不正确的 url,我得到
Error code: -2146697210
Reason: System error: -2146697210
这些代码是在哪里定义的?
如原因中所述,此错误来自您的系统。
SysErrorMessage(ErrorCode)
应该做你想做的。
仅当错误来自系统时才调用 SysErrorMessage。但现在你需要弄清楚如何知道这一点。可以这样检查原因
if reason.StartsWith('System Error') then
errorMessage := SysErrorMessage(errorCode);
但这样做似乎不太好(是否取决于 Windows 语言设置?...)
当使用 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)
这个特定的 HESULT
值记录在 URL Moniker Error Codes 中。所有具有 FACILITY_INTERNET
设施的 HRESULT
值都属于 WinInet 库,其中包括 UrlMon 模块。 MSXML 在内部使用 WinInet 下载远程内容。