gpt4 book ai didi

delphi - ActiveX 不引发 EOleException

转载 作者:行者123 更新时间:2023-12-02 13:13:17 29 4
gpt4 key购买 nike

我在 Delphi XE2 中的不同项目中制作了两个 activex 组件。其中一个组件工作正常,它抛出的每个异常都会被屏蔽为 EOleException。在另一个 activex 组件上,异常不会被屏蔽,而是以其原始类型抛出。客户端是delphi XE程序。

当 activex 组件抛出原始异常时,该组件对任何其他方法的下一次调用都会在不应该抛出访问冲突异常的地方抛出访问冲突异常,例如设置带有值的本地字符串变量。这是一种非常奇怪的行为。

我比较了两个项目的 .ridl 文件、编译选项、.dproj 文件,但找不到罪魁祸首。

有人知道这种差异/奇怪行为的原因吗?

谢谢

编辑:一些代码

组件 1 有效(屏蔽 EOleException 的所有异常)

TspdMyClassX = class(TActiveXComponent, MyInterface)

...

initialization


TActiveXComponentFactory.Create(
ComServer,
TspdMyClassX,
CLASS_spdMyClassX,
1,
'',
0,
tmBoth);

其他不抛出EOleException的组件有不同的接口(interface),但其余代码是相同的(初始化,父类TActiveXComponent)

最佳答案

在我看来,问题出在 delphi XE2 生成的 .ridl/.tlb 文件上。我使用delphi 7重新设计了该组件,然后在delphi xe2中打开该项目,并且仅在其中编译/构建(在.ridl中没有编辑,在delphi xe2中的TLB中没有更改)。所有异常均被 EOleException 正确屏蔽,问题已解决

关于delphi - ActiveX 不引发 EOleException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16171484/

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