0

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

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

例如,如果我设置XMLDocument.FileName为不正确的 url,我有

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

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

4

2 回答 2

2

当使用 MSXML 作为 DOM 提供程序时TXMLDocument,该EDOMParseError.ErrorCode值是一个 COMHRESULT值(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 Error Codes中。所有HRESULT具有工具的值都FACILITY_INTERNET属于 WinInet 库,其中包括 UrlMon 模块。MSXML 在内部使用 WinInet 下载远程内容。

于 2016-04-11T19:41:57.800 回答
0

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

SysErrorMessage(ErrorCode)

应该做你想做的。

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

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

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

于 2016-04-11T15:24:52.210 回答