如何为VBScript错误获取更具声明性的字符串

时间:2012-04-05 22:00:07

标签: delphi winapi com activex

只是为了解释有关上下文的更多信息,这是如何重现:

  • Delphi 7(但也许是更新的版本)
  • 导入类型库“Microsoft VBScript Regular Expressions 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资源字符串返回一些内容。

是否有一个替代SysErrorMessage的winapi来获得更好的错误描述?如果我稍微谷歌,代码确实代表'缺少括号'错误,但如果有一种方法我可以从系统获得(本地化)描述,我宁愿使用它,而不是必须添加枚举我的项目的错误描述常量。

1 个答案:

答案 0 :(得分:2)

那是COM error。要获取文字说明,请致电GetErrorInfo,然后致电IErrorInfo.GetDescription。但如果你没有得到任何有用的东西,不要感到惊讶。