gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:32:28 26 4
gpt4 key购买 nike

我编写了使用 CDO.Message 的例程。它很久以前就开始工作了。
但是现在,在某些站点中,他们安装了证书,然后之前的工作版本在所有调用中都出错了。

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

当我使用发送方法(?)时,它返回一个 HResult。
但这很有趣,因为 HResult 无法用于获取错误代码,因为 Send 似乎是一个真正的方法,它会在问题上产生异常。
因此,如果我之前设置为该值,结果代码为 -1。

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

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

“传输无法连接到服务器”

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

您知道从 Delphi XE3 获取错误代码值的技术吗?

最佳答案

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

我的猜测是该方法被声明为 safecall .这意味着编译器理解该方法实际上是stdcall。返回 HRESULT , 并重新写入要匹配的参数。如果真正的 COM 方法返回 HRESULT除了 S_OK然后编译器编写代码来检查它并将错误转换为异常。

引发的异常将是 EOleSysError并且具有属性 ErrorCode其中包含 HRESULT你正在寻找的。

因此,您需要:

  • 添加异常处理程序以捕获 EOleSysError .
  • 阅读 ErrorCode EOleSysError 的属性(property)您捕获的异常实例。

  • 这一切都在房子周围。如果您希望避免异常处理,那么您可以随时将 COM 接口(interface)声明重写为真正的 stdcall返回 HRESULT 的方法.

    关于delphi - 如何获取 CDO.Message 的错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19684403/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com