我现在着急用vb开发一个动态库,可是vb一点都不会,赶鸭子上架了:(
需要引用一个组件的函数,查看该函数原形如下:
Function PutData(RecordNum As Long, vFieldData, nNumFields As Long) As Boolean我用如下方式调用该函数:Dim w As Variant
Dim bb As Boolean
w = 2008
bb = DataPipe.PutData(1, v, 12)结果该组件老是提示我下标出界,为何呢?函数原形中 vFieldData 参数是Variant类型吗?还是要传递数组啊?看起来怎么没有定义啊?
请求帮助

解决方案 »

  1.   

    笔误
    bb = DataPipe.PutData(1, w, 12)
      

  2.   

    你没有文档的么
    照你的调用和你的说法来看,如果vFieldData是个数组,那它至少应该是个具有12个元素的数组
      

  3.   

    看看接口说明吧,别人是不知道vFieldData是什么类型的
      

  4.   

    楼上的谢谢!
    暂没有文档,只能试着来
    不知道vFieldData是一个参数还是数组,我觉得如果vFiedData是参数,那么最后一个参数nNumFields 传递的是字段的序号;如果vFieldData是数组,那么nNumFields 应传递数组大小。
    这个没有声明类型的vFieldData真让人难受,vb里面不论传递单个参数还是数组都不需要声明吗?我做了这样的测试:Dim w As Variant 
    Dim bb As Boolean 
    w = 2008 
    bb = DataPipe.PutData(1, w, 12)
     错误提示是 类型不匹配 
    Dim bb As Boolean 
    Dim v(12) As VariantFor i = 0 To 12
        v(i) = 20.8
    Nextbb = DataPipe.PutData(1, v, 12) 
    错误提示是 下标出界那么请经验丰富的朋友帮我确认一下,这个函数vFieldData应该传递数组,nNumFields 应传递数组大小吗?
      

  5.   

    改成这样还出界么bb = DataPipe.PutData(1, v, 2) 
      

  6.   

    是的,仍然提示越界,改成bb = DataPipe.PutData(1, v, 1)也是这样 
    不解阿
      

  7.   

    Function PutData(RecordNum As Long, vFieldData, nNumFields As Long) As Boolean
    从参数名称来分析的话,recordnum应该是记录的数量,nNumFields应该是每一个记录中的元素的数量,vFieldData可能是一个二维数组或是一个集合(collection)对象,也可能是数组和集合(collection)对象的混合体,不过估计是二维数组的可能性大一些,因为如果是集合(collection)对象就不需要传递元素的数量,可以直接用collection的count属性取得。如果是二维数组你可以参考以下代码进行测试:Dim bb As Boolean 
    Dim v() As Variant 
    dim w() as Variantv=array(20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8,20.8)
    w=array(v)bb = DataPipe.PutData(1, w, 12) 说明:w是一个数组,其成员由V数组构成,其中1表示w数组的成员数量,12表示v数组的成员数量。