参数数组的问题

cslegend 2004-05-14 09:38:51
我用DELPHI写了个DLL操作并口,提供一个函数给VB,函数原型是:
function send_array(byarray:Array of Byte):Integer;
我在VB中调用如下:
声明:Declare Function send_array Lib "p_port.dll" (ByRef byarray() As Byte) As Integer

调用:
control = Array(&H1B, &H40, &H1B, &H4B, 60, &H1B, &H4C, &H1B, &H54, 1, &H1C, &H2B, &H1B, &H57, 33, 0, 0, 0, 197, 0, 223, 0, &H1B, &H20, 6, &H20, &H1B, &H21, &H20)
send_array(control) (改成send_array(control())也不行)
全编译执行是报错:“类型不匹配,缺少数组或用户定义类型”
第一次用VB,不太明白,请熟悉的人指点下怎么解决。

...全文
71 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cslegend 2004-08-10
  • 打赏
  • 举报
回复
对不起,很久没来了,所以现在才结帖
谢谢supergreenbean(超级绿豆 - 世界上只有一种人不能得罪 —— 女人)的帮助
cslegend 2004-05-14
  • 打赏
  • 举报
回复
TechnoFantasy(冰儿马甲www.applevb.com)

》》Declare Function send_array Lib "p_port.dll" (byarray As Byte)
这样应该是只传递一个字节的BYTE值,我要的是传递一个数组。
cslegend 2004-05-14
  • 打赏
  • 举报
回复
supergreenbean(超级绿豆)
我改成你的申明了,但是错误还是一样。
》》还有不要用Array来制作数组,这样返回的是一个Variant类型而不是你要的Byte类型数组
是什么意思?我的Array是参数,不是返回的数值。
kmzs 2004-05-14
  • 打赏
  • 举报
回复
是呀
supergreenbean 2004-05-14
  • 打赏
  • 举报
回复
改成
Declare Function send_array Lib "p_port.dll" (byarray() As Any) As Long
看看

还有不要用Array来制作数组,这样返回的是一个Variant类型而不是你要的Byte类型数组
cslegend 2004-05-14
  • 打赏
  • 举报
回复
zhujiechang(小朱)
DLL中的函数没有问题,INTEGER是可以的,我动态库中还有其他的函数,都是返回INTEGER型的,没有问题。
cslegend 2004-05-14
  • 打赏
  • 举报
回复
TechnoFantasy(冰儿马甲www.applevb.com)
谢谢,我加了stdcall,刚才去掉了,我试验下你的调用方法。
zhujiechang 2004-05-14
  • 打赏
  • 举报
回复
另外:Declare Function send_array Lib "p_port.dll" (byarray As any) As long
TechnoFantasy 2004-05-14
  • 打赏
  • 举报
回复
如果是在Delphi中输出函数的话,函数原型需要添加stdcall保留字。另外你可以试一下将函数这么定义:
Declare Function send_array Lib "p_port.dll" (byarray As Byte)

调用:
send_array(control(0))
cslegend 2004-05-14
  • 打赏
  • 举报
回复
我的DLL函数没有问题。
supergreenbean 2004-05-14
  • 打赏
  • 举报
回复
呵呵,我说的是VB里面不要用
control = Array(&H1B, &H40, &H1B, &H4B, 60, &H1B, &H4C, &H1B, &H54, 1, &H1C, &H2B, &H1B, &H57, 33, 0, 0, 0, 197, 0, 223, 0, &H1B, &H20, 6, &H20, &H1B, &H21, &H20)
来生成control数组,而不是你DELPHI里的那个Array

另外你声明再改成这样看看
Declare Function send_array Lib "p_port.dll" (byarray As Any) As Long
然后调用的时候
send_array(control(0))
ryuginka 2004-05-14
  • 打赏
  • 举报
回复
up
cslegend 2004-05-14
  • 打赏
  • 举报
回复
up

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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