gpt4 book ai didi

delphi - 获取对 IDispatch 接口(interface)成员的访问权限

转载 作者:行者123 更新时间:2023-12-03 18:39:15 29 4
gpt4 key购买 nike

我是物理学家。我正在尝试使用导入的 activex 控件(ocx 文件)在 Delphi 上工作。假设库中有 3 个自动化接口(interface):IGraph、IGraphAxes 和 IAxis。图书馆的结构是这样的:

===IGraph 的属性:===
Idispatch* IGraphAxes;
...//其他成员

===IGraphAxes 的属性:===
Idispatch* XAxis;
Idispatch* Y轴;
Idispatch* Z轴;
整数颜色;
整数样式;
…//其他成员

===IAxis 属性:===
float 最小值,最大值;
bool 显示编号;
…//其他成员

通过 IGraph,我可以使用 GetIDsOfNames() 和 Invoke() 函数访问 IGraphAxes 的简单成员(颜色和样式)。但是当我尝试访问 XAxis(或 YAxis、Zaxis)时,它会产生错误。首先,我使用 GetIDsOfNames() 它返回 XAxis 的 dispid 没有任何问题。但是当我用那个 dispid 调用 Invoke 时,会出现错误“地址访问冲突......”。看来,idispatch 指针 (**Xaxis)* 没有指向任何内容。我该如何解决这个问题?怎么做
Idispatch* Xaxis

IAxis 接口(interface)相互连接?
附言对不起我的英语,我不是母语人士

最佳答案

Delphi 内置了对 IDispatch 后期绑定(bind)的支持,因此您不需要直接调用 Invoke()。只需像普通属性一样访问成员,Delphi 就会在幕后为您调用 Invoke()。

如果您想直接调用 Invoke(),那么请显示您失败的实际代码。 AV 很可能是由于您的代码中的错误而不是 OCX 本身中的错误。

关于delphi - 获取对 IDispatch 接口(interface)成员的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693637/

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