2

只是为了更多地解释上下文,这是如何重现:

  • Delphi 7(但也可能是更新的版本)
  • 导入类型库“Microsoft VBScript 正则表达式 5.5”

围绕这段代码编写一个程序:

var
  re:RegExp;
try
  re:=CoRegExp.Create;
  re.Pattern:='(';//is an invalid regex, but see below
  re.Test('');
except
  on e:Exception do
    Caption:=e.ClassName+' '+e.Message;
end;

这将引发异常EOleError OLE error 800A139C

这样做是因为 SysErrorMessage 在此代码上返回一个空字符串,并且 EOleSysError 构造函数默认为 SOleError 资源字符串以返回某些内容。

是否有 Winapi 替代 SysErrorMessage 以获得更好的错误描述?如果我用谷歌搜索一下,代码确实代表“缺少括号”错误,但如果有办法从系统中获取(本地化)描述,我宁愿使用它,而不是必须添加枚举我的项目的错误描述常量。

4

1 回答 1

2

那是一个COM 错误。要获取文本描述,请调用GetErrorInfo,然后调用IErrorInfo.GetDescription。但是,如果您没有得到任何有用的回报,请不要感到惊讶。

于 2012-04-05T22:48:54.790 回答