社区
语言基础/算法/系统设计
帖子详情
Delphi 开发com组件时,com组件中的函数返回值如何返回数组,如何调试com
Jammyzhengliao
2008-12-14 12:24:54
最近用Delphi 开发几个com组件,但是碰到一个问题:com中的函数的返回值如何返回一个数组,比如输入参数为widestring类型,结果得到一个数组,怎样将这数组返回? 另外一个问题是 Windows XP 下 Delphi 如何调试com组件 ?
...全文
66
4
打赏
收藏
Delphi 开发com组件时,com组件中的函数返回值如何返回数组,如何调试com
最近用Delphi 开发几个com组件,但是碰到一个问题:com中的函数的返回值如何返回一个数组,比如输入参数为widestring类型,结果得到一个数组,怎样将这数组返回? 另外一个问题是 Windows XP 下 Delphi 如何调试com组件 ?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jammyzhengliao
2008-12-24
打赏
举报
回复
呵呵,谢谢楼上各位,以后一定要改好问懒动手的坏习惯.其实这两个问题在提问当晚自己就解决了.
chenyq2008
2008-12-20
打赏
举报
回复
调试com跟调试dll是一样的
liangpei2008
2008-12-20
打赏
举报
回复
1.用variant数组
2.也可以使接口返回一个WideString类型的XML来表示数组!不是更方便?
withcsharp
2008-12-18
打赏
举报
回复
AccountReg := VarArrayCreate([0,1], VarVariant);
AccountReg[1] := 123456; // 假设 AccNum=123456
TempVar1 := VarArrayCreate([0,1023], VarVariant);
for i:=0 to 1023 do
begin
TempVar2 := VarArrayCreate([0,1], VarVariant);
TemptVar2[0] := ??????; // sValue的值
TemptVar2[1] := ??????; // cType的值
TempVar1[i] := TempVar2;
end;
AccountReg[0] := TempVar1;
???
Delphi
bmp图片转RGB byte方法
提供了一个Function,是在项目
中
用到的BMP图片转BGR BYTE的方法.
Delphi
中
制作DLL
中
回调
函数
的应用
Delphi
中
制作DLL •一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或
函数
2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二参数传递 1 参数类型最好与window C++的参数类型一致。不要用
DELPHI
的数据类型。 2 最好有
返回
值
[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的
返回
值
最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far调用后缀,那只是为了与windows 16位程序兼容。 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 1 DLLProc[SysUtils单元的一个Pointer]是DLL的入口。在此你可用你的
函数
替换了它的入口。但你的
函数
必须符合以下要求[其实就是一个回调
函数
]。如下: procedure DllEnterPoint(dwReason: DWORD);far;stdcall; dwReason参数有四种类型: DLL_PROCESS_ATTACH:进程进入
时
DLL_PROCESS_DETACH进程退出
时
DLL_THREAD_ATTACH 线程进入
时
DLL_THREAD_DETACH 线程退出
时
在初始化部分写: DLLProc := @DLLEnterPoint; DllEnterPoint(DLL_PROCESS_ATTACH); 2 如Form上有Td
com
Connection
组件
,就Uses Activex,在初始化
时
写一句CoInitialize (nil); 3 在退出
时
一定保证D
com
Connection.Connected := False,并且数据集已关闭。否则报地址错。 四全局变量的使用 在widnows 32位程序
中
,两个应用程序的地址空间是相互没有联系的。虽然DLL在内存
中
是一份, 但变量是在各进程的地址空间
中
,因此你不能借助dll的全局变量来达到两个应用程序间的数据 传递,除非你用内存映像文件。 五、其他:调用方式按照标准的Windows调用方式. 六、关于参数传递 •
Delphi
程序之间调用DLL,如果要用String类型的话,要在引用的单元加上ShareMem 单元。 •如果
Delphi
写的DLL供其他
开发
工具使用的话,不要使用String类型,用PAnsiChar类型。 尽量使用标准DLL接口。指的是传递的参数类型及
函数
返回
类型不能是
Delphi
特有的, 比如string(AnsiString),以及动态
数组
和含有这些类型成员的复合类型(如记录),也不 能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。如果使用了string类型或 动态
数组
类型,且调用方不是
Delphi
程序,则基本上会报错。如果调用方是
Delphi
但调用方或 被调用方没有在工程文件的第一包含单元不是ShareMem,也可能会出错。 七、关于回调Funciton 你可以把Callback
函数
看作是一种特殊的消息响应
函数
,一般来说我们不会自己调用这种
函数
, 而是有某些系统
函数
调用,而且不需要向后传递消息。 只要象C/C++这样支持
函数
指针的语言都 有回调
函数
的概念,它实际上是向被调用
函数
传一个你的
函数
地址,然后被调用
函数
向通过你传 入的
函数
地址来调用你的
函数
。 以上是结构化回调,到高级语言Object Pascal、C++
中
回调
函数
并没有退出,反而得到延伸与 扩展,在面向对像
中
的回调,其实是指面向对像
中
类对像的事件,事件就是原始的回调
函数
。面 向对像, 将回调
函数
定义成事件过程,在程序引用对像
时
,若指定了对像的过程事件后,那么在 要进行事件触发的地方检查事件过程是否分配,如果分
中
的就执行事,也就是执行了回调
函数
。
Delphi
函数
参考大全
Delphi
函数
参考大全 超清 带书签,
delphi
很有前途的!
Delphi
开发
规范.pdf
Delphi
开发
规范.pdf
Delphi
6
函数
大全
Delphi
6
函数
大全
语言基础/算法/系统设计
16,747
社区成员
33,239
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章