当前位置:编程学习 > VB >>

关于VB数组的问题

--------------------编程问答--------------------
Dim rtn As Integer   
  Dim t as TMap
  t.cnt(1) = 2000   
  t.cnt(2) = 0   
  t.cnt(3) = 0   
  t.cnt(4) = 0   
  t.cnt(5) = 0   
  rtn = GT_MapAxis(1, cnt1)  
--------------------编程问答-------------------- 支持楼上
--------------------编程问答-------------------- 楼主可以将自定义结构做成一个tlb使用
--------------------编程问答--------------------
引用 1 楼 tiger_zhao 的回复:
VB code
Dim rtn As Integer   
  Dim t as TMap
  t.cnt(1) = 2000   
  t.cnt(2) = 0   
  t.cnt(3) = 0   
  t.cnt(4) = 0   
  t.cnt(5) = 0   
  rtn = GT_MapAxis(1, cnt1)



刚试了,还是不行,依然提示:  ByRef参数类型不符。光标指向rtn = GT_MapAxis(1, cnt1) --------------------编程问答-------------------- 能不能就用上面例子帮我做个,就这样说我一点也看不懂,呵呵,写出来谢谢哈。。顶你
引用 3 楼 gooore 的回复:
楼主可以将自定义结构做成一个tlb使用
--------------------编程问答-------------------- 坐标映射命令函数原型是:short GT_MapAxis(short Axis_Num, double * map_count)。
Axis_Num 为轴号(1、2、3 或4),调用坐标映射命令以后,该轴工作于坐标运动模式。
该轴的实际位置记为Axis _ N ,单位是脉冲。数组map_count包括五个元素,顺次记为x C 、
y C 、z C 、a C 、C ,坐标轴X、Y、Z、A 所对应的相应坐标记为x 、y 、z 、a 。上述
函数描述的映射关系能够简单地描述成下面的计算公式:
Axis N C x C y C z C a C x y z a _ = × + × + × + × +
由此可以看出被映射的控制轴的运动是坐标 X、Y、Z、A 的线性组合。


这是VC++6.0里 对这模块的详细说明。。。。我忘了补充 --------------------编程问答-------------------- 这样声明:
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, map As any) As  Integer
这样调用:
rtn = GT_MapAxis(1, cnt1(1)) --------------------编程问答-------------------- 最好把GT_MapAxis在c语言声明贴出来 --------------------编程问答--------------------
引用 8 楼 lhcwjy 的回复:
最好把GT_MapAxis在c语言声明贴出来


好象不能自己跟3帖子的吧,我试下。
坐标映射命令函数原型是:short GT_MapAxis(short Axis_Num, double * map_count)。
Axis_Num 为轴号(1、2、3 或4),调用坐标映射命令以后,该轴工作于坐标运动模式。
该轴的实际位置记为Axis _ N ,单位是脉冲。数组map_count包括五个元素,顺次记为x C 、
y C 、z C 、a C 、C ,坐标轴X、Y、Z、A 所对应的相应坐标记为x 、y 、z 、a 。上述
函数描述的映射关系能够简单地描述成下面的计算公式:

由此可以看出被映射的控制轴的运动是坐标 X、Y、Z、A 的线性组合
--------------------编程问答--------------------
引用 7 楼 lhcwjy 的回复:
这样声明:
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, map As any) As Integer
这样调用:
rtn = GT_MapAxis(1, cnt1(1))


能写个具体点的吗?象Tiger_Zhao一样  先就只写/* 映射第1 轴到X 轴 */
其他几轴的 我依葫芦画瓢。 --------------------编程问答--------------------
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, map As any) As Integer
  Dim cnt1(5) As Double   
  cnt1(0) = 2000   
  cnt1(1) = 0   
  cnt1(2) = 0   
  cnt1(3) = 0   
  cnt1(4) = 0   
  rtn = GT_MapAxis(1, cnt1(0))

这样应该可以了 --------------------编程问答-------------------- 好快的速度,谢谢你,我去试下哈  你等等,我马上测试了就来 --------------------编程问答--------------------
引用 11 楼 lhcwjy 的回复:
VB code
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, map As any) As Integer
  Dim cnt1(5) As Double   
  cnt1(0) = 2000   
  cnt1(1) = 0   
  cnt1(2) = 0   
  cnt1(……


--------------------编程问答-------------------- Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, byval map As any) As Integer
  Dim cnt1(4) As Double   
  cnt1(0) = 2000   
  cnt1(1) = 0   
  cnt1(2) = 0   
  cnt1(3) = 0   
  cnt1(4) = 0   
  rtn = GT_MapAxis(1, varptr(cnt1(0)))

再试 --------------------编程问答-------------------- byval map As any
rtn = GT_MapAxis(1, varptr(cnt1(0))) --------------------编程问答-------------------- Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, byval map As any) As Integer
  Dim cnt1(4) As Double   
  cnt1(0) = 2000   
  cnt1(1) = 0   
  cnt1(2) = 0   
  cnt1(3) = 0   
  cnt1(4) = 0   
  rtn = GT_MapAxis(1, varptr(cnt1(0)))
生成EXE的时候 还是提示 ByRef参数类型不符。  光标把rtn = GT_MapAxis(1, varptr(cnt1(0)))这句话中的cnt1选中了。



换成15楼的:还没保存EXE就直接有红字,象这样:
  byval map As any
  rtn = GT_MapAxis(1, varptr(cnt1(0))) --------------------编程问答-------------------- Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, byval map As any) As Integer看这里,我是提醒你这里面要改 --------------------编程问答-------------------- 啊~那个模块不是我写的,那是一个公司出的产品的自带模块内容,用来调用他公司gt400.dll文件的,也可以改??
我QQ:101070898 这问题折磨我2天了,给你看看

引用 17 楼 lhcwjy 的回复:
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, byval map As any) As Integer看这里,我是提醒你这里面要改
--------------------编程问答-------------------- 晕了................. --------------------编程问答-------------------- 我是指把api的声明改一改 --------------------编程问答--------------------
引用 18 楼 yinguiren000ren 的回复:
啊~那个模块不是我写的,那是一个公司出的产品的自带模块内容,用来调用他公司gt400.dll文件的,也可以改??
我QQ:101070898 这问题折磨我2天了,给你看看


引用 17 楼 lhcwjy 的回复:
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, byval map As……

--------------------编程问答-------------------- Public 的结构定义和 Public Declare 语句都放在模块(.bas)中,不要放在类或窗体中。 --------------------编程问答-------------------- 用rtn = GT_MapAxis(1, varptr(cnt1(0)))时将api函数声明byval map As any 改成 as long 行不行?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,