vb.net 调用 ocx 控件的问题

cb 2005-03-24 01:09:16
vb.net 调用 ocx 控件的问题

我有一个 ocx 控件,使用 C++builder Delphi VC VB6

等程序调用其中的函数,都没有问题,

但是现在要在 vb.net 下调用却始终不能通过

函数说明如下

BOOL GetData(Long FAR* d1 ,
Long FAR* d2 ,
Long FAR* d3 );


在 vb6 中调用方法如下,而且成功,没有任何问题

Dim d1(0) As Long
Dim d2(512) As Long
Dim d3(0) As Long
ActiveX_xxx.GetData(d1(0),d2(0),d3(0))

可是在 vb.net 下却程序意外退出.

据说是因为 vb6 是传值与传址的,而 vb.net 都是传址的,

所以 d2(0) 这样的写法有问题

请问哪位大侠可以解决这个问题.当然是在不改动 ocx 控件的情况下.
...全文
365 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cb 2005-03-31
  • 打赏
  • 举报
回复
to 他乡之客

改成 ActiveX_xxx.GetData(ObjPtr(d1(0)),ObjPtr(d2(0)),ObjPtr(d3(0)))

仍然是执行到这句就程序中止了
captain_lww 2005-03-28
  • 打赏
  • 举报
回复
你把这三个地址都传进去试试
cb 2005-03-28
  • 打赏
  • 举报
回复
to 他乡之客

现在的现象是不提示任何错误,程序直接跳出了

就在 ActiveX_xxx.GetData(d1(0),ObjPtr(d2(0)),d3(0)) 这行语句处
captain_lww 2005-03-26
  • 打赏
  • 举报
回复
对了,把函数的改为Integer 而不是 Long

Private Declare Function ObjPtr Lib "MSVBVM60" Alias "VarPtr" (var As Object) As Integer
cb 2005-03-26
  • 打赏
  • 举报
回复
to 他乡之客
提示错误:

未处理的“System.OverflowException”类型的异常出现在 FD_900_TEST.exe 中。

其他信息: 算术运算导致溢出。

按其他人的方法错误依旧,没有任何提示,程序就意外中止了.
boxter110 2005-03-25
  • 打赏
  • 举报
回复
Dim d1(0) As integer
Dim d2(512) As integer
Dim d3(0) As integer

数组长度是不是有问题?
改成:
ActiveX_xxx.GetData(d1(),d2(),d3())
怎么样?
cb 2005-03-25
  • 打赏
  • 举报
回复
定义成 Integer 试过了,

也不成,错误依旧
weiljj 2005-03-25
  • 打赏
  • 举报
回复
Dim d1(0) As int32
Dim d2(512) As int32
Dim d3(0) As int32
ActiveX_xxx.GetData(d1,d2,d3)
captain_lww 2005-03-25
  • 打赏
  • 举报
回复
Private Declare Function ObjPtr Lib "MSVBVM60" Alias "VarPtr" (var As Object) As Long

ObjPtr(d2(0))作用是返回d2(0)的地址,然后把地址传进去看看
boxter110 2005-03-24
  • 打赏
  • 举报
回复
vb.net中定义为:
Dim d1(0) As integer
Dim d2(512) As integer
Dim d3(0) As integer
ActiveX_xxx.GetData(d1(0),d2(0),d3(0))

是一是!.net里的integer和VB6里的integer 不大一样

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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