我编写了使用CDO.Message的例程。很久以前就起作用了。但现在,在一些网站上,他们安装了一个证书,然后优先工作的版本是错误的所有调用。
我使用简单的变体来保存CDO.Message COM对象。
当我使用发送方法(?)它返回一个HResult。但这很有趣,因为HResult无法获得错误代码,因为发送似乎是一种真正的方法,可以在问题上破例。因此,如果我之前设置为这个值,结果代码是-1。
我试着用GetLastError获取最后一个错误代码。但这是0。
我可以捕获异常,但它只包含以下错误消息:
“传输未能连接到服务器”
VB代码可以得到错误代码,这可以提供关于问题的额外信息(或不)。
你知道从德尔菲XE3中获取错误代码值的技术吗?
发布于 2013-10-30 14:16:11
如果我们手头有一些源代码会更好。特别是COM接口的Delphi声明。
我的猜测是该方法被声明为safecall。这意味着编译器理解该方法实际上是stdcall返回的HRESULT,并重写匹配的参数。如果真正的COM方法返回的是HRESULT,而不是S_OK,那么编译器会编写代码来检查这一点,并将错误转换为异常。
引发的异常将是EOleSysError,它具有属性ErrorCode,该属性包含您要查找的HRESULT。
所以,你需要:
EOleSysError。ErrorCode异常实例的EOleSysError属性。这一切都是围绕着房子。如果您希望避免异常处理,那么始终可以重写COM接口声明,使其成为返回HRESULT的真正的HRESULT方法。
https://stackoverflow.com/questions/19684403
复制相似问题