建个COM对象,其中一个函数的传人参数要是Pointer,在TypeLibrary中应该怎么设置。

散乱心绪 2009-06-18 10:07:06
1: New->Others->ActiveX->ActiveX Library

2: New->Others->ActiveX->Com Object

3: Class Name中填入 Sample,并确定。

4: 这个时候会出现一个 Type Library的窗口

5: 选择ISample,右键->New->Method

6: 选择Method,右边的窗口中选择 Parameters标签页。

7: 我设置一个名为Buffer的输入参数,点击Type列,会出现一个下拉框,选择Long类型,Modifer选择[in]

8: 点击刷新

9: 接口的代码delphi会自动生成好,如下
ISample = interface(IUnknown)
['{BA570B3E-769F-4E37-89A9-CA4783D60715}']
function Method1(Buffer: Integer): HResult; stdcall;
end;

问题: 如果我想要让输入参数为 Buffer: Pointer,在Type列表应该选择什么。
...全文
47 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaiBirdy 2009-06-19
  • 打赏
  • 举报
回复
实际上传过去的只是一个Byte数据的指针地址,你完全可以用integer当中指针的具体地址来用,只需要强制转换类型就行了,这样还可以解决是在OCX的情况下,用脚本语言调用无法使用指针的缺陷。。
CaiBirdy 2009-06-19
  • 打赏
  • 举报
回复
delphi中Pointer 等价于Pchar或PByte,也就是说在VC中可以用char*,Byte*,而在delphi中VC中的Byte用unsigned char代替,所以在Type Library中Byte*用unsigned char *(*可以自己加上)代替。

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧