delphi的一个dll调用,如何用pb调用?

sgjie 2009-06-01 02:04:55
一个c语言的dll 。函数是这么定义的 EXTC int _stdcall senddata(HANDLE hcom, BYTE *pbBuf, int len1);
在delphi中
QryByteArr:array[0..3] of byte;
QryByteArr[0] :=$03;
QryByteArr[1] :=$0F;
QryByteArr[2] :=$00;
QryByteArr[3] :=$00;


这样调用 senddata(g_hcom,@QryByteArr,4) ;
各位 如何转换成pb啊。
如何传入 ,@QryByteArr
...全文
200 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sgjie 2009-06-02
  • 打赏
  • 举报
回复
那麻烦了,看来只能改dll那边的函数入口了。
永生天地 2009-06-02
  • 打赏
  • 举报
回复
pb只能用十进制,比如send函数

Send(Handle(this),256,9,Long(0,0))
sgjie 2009-06-02
  • 打赏
  • 举报
回复
谢谢楼上,那有2进制表示形式吗?传入2进制也可以。
永生天地 2009-06-02
  • 打赏
  • 举报
回复
pb没有16进制表示方式,需要先将你的16进制的数转换成10进制的,然后在函数中调用

[Quote=引用 5 楼 sgjie 的回复:]
谢谢各位,是个dll,和厂家沟通清楚了,就是传入一个16进制数组,或者二进制数组。
pb中如果定义 char bySend[27]的话,如何给 QryByteArr[1] 赋值表示 16进制或者2进制数据呢? 在delphi 中 QryByteArr[1]= $03 就代表16进制了。 在pb中怎么办啊。 lzp_lrp发到你邮箱了。
[/Quote]
sgjie 2009-06-02
  • 打赏
  • 举报
回复
谢谢各位,是个dll,和厂家沟通清楚了,就是传入一个16进制数组,或者二进制数组。
pb中如果定义 char bySend[27]的话,如何给 QryByteArr[1] 赋值表示 16进制或者2进制数据呢? 在delphi 中 QryByteArr[1]= $03 就代表16进制了。 在pb中怎么办啊。 lzp_lrp发到你邮箱了。
hahyhy 2009-06-02
  • 打赏
  • 举报
回复
你的是DLL还是COM+啊,这个要区分清楚,如果是DLL,需要在PB中定义,但是要是COM+的话,就需要用OLE的形式去操作了,而且有数组的情况下,要知道是字符数组还是数值的,如果不知道,就用ANY类型做定义
sinlan 2009-06-02
  • 打赏
  • 举报
回复
可以写个dll间接调用
WorldMobile 2009-06-01
  • 打赏
  • 举报
回复
如果搞不定,发给我,我给你试试

我的mail:lzp_lrp@sina.com,留下你的QQ
WorldMobile 2009-06-01
  • 打赏
  • 举报
回复
EXTC int _stdcall senddata(HANDLE hcom, BYTE *pbBuf, int len1);
在pb中这么声明,试试

function integer senddata(long hcom, ref long pbBuf[], long len1);

或者

function integer senddata(long hcom, ref char pbBuf[], long len1);

试试吧
wag_enu 2009-06-01
  • 打赏
  • 举报
回复


不知道,用senddata(g_hcom, ref QryByteArr,4) 试一下.
但是注意:pb数组的下标是从1开始的,即没有 QryByteArr[0] .

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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