首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取CDO.Message的错误代码

如何获取CDO.Message的错误代码
EN

Stack Overflow用户
提问于 2013-10-30 14:02:32
回答 1查看 610关注 0票数 0

我编写了使用CDO.Message的例程。很久以前就起作用了。但现在,在一些网站上,他们安装了一个证书,然后优先工作的版本是错误的所有调用。

我使用简单的变体来保存CDO.Message COM对象。

当我使用发送方法(?)它返回一个HResult。但这很有趣,因为HResult无法获得错误代码,因为发送似乎是一种真正的方法,可以在问题上破例。因此,如果我之前设置为这个值,结果代码是-1。

我试着用GetLastError获取最后一个错误代码。但这是0。

我可以捕获异常,但它只包含以下错误消息:

“传输未能连接到服务器”

VB代码可以得到错误代码,这可以提供关于问题的额外信息(或不)。

你知道从德尔菲XE3中获取错误代码值的技术吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-30 14:16:11

如果我们手头有一些源代码会更好。特别是COM接口的Delphi声明。

我的猜测是该方法被声明为safecall。这意味着编译器理解该方法实际上是stdcall返回的HRESULT,并重写匹配的参数。如果真正的COM方法返回的是HRESULT,而不是S_OK,那么编译器会编写代码来检查这一点,并将错误转换为异常。

引发的异常将是EOleSysError,它具有属性ErrorCode,该属性包含您要查找的HRESULT

所以,你需要:

  • 添加一个异常处理程序来捕获EOleSysError
  • 读取捕获的ErrorCode异常实例的EOleSysError属性。

这一切都是围绕着房子。如果您希望避免异常处理,那么始终可以重写COM接口声明,使其成为返回HRESULT的真正的HRESULT方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19684403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档