奇怪的数据类型Variant,关于函数参数传递有关问题,

奇怪的数据类型Variant,关于函数参数传递问题,高手请进!!
本人在做一个数据采集软件,采集后的数据放入一数组中,传入下面的一类的成员函数存储.


成员函数
Public   Sub   SaveData(vatDataStream   As   Variant)
    ReDim   vatDataStream   (100,   10000)As   Integer
End   Sub
入口参数vatDataStream   为一二维数组,数据量很大,可能达到好几百M.
传入后重新定义为integer型.

然后写入文件,代码如下

        hdlFile   =   FreeFile()
        Open   FilePath   For   Binary   Access   Write   As   hdlFile

        i   =   UBound(vatDataStream,   1)
        j   =   UBound(vatDataStream,   2)
        Put   hdlFile,   ,   i
        Put   hdlFile,   ,   j
        Put   hdlFile,   ,   intArrayCov

        Close   hdlFile

打开二进制文件后,发现写入的文件和原数组不一样.


后来我用for语句把vatDataStream   转换到一个新定义的Integer数组后,写入的文件和原数组一样

但因为数组很大不想用for语句转换,请问如何解决??

------解决方案--------------------
为什么要Public Sub SaveData(vatDataStream As Variant)?直接传个数组不就行了?

Public Sub SaveData(vatDataStream() As Integer)


或者传这个数组的地址,然后在函数中再处理
------解决方案--------------------
ReDim vatDataStream (100, 10000)As Integer
改成
ReDim preserve vatDataStream (100, 10000)As Integer

我没有测试,不知道是否可行
------解决方案--------------------
楼主直接用ReDim 那还传参数过来干吗?
楼上的说得对,用ReDim Preserve

其次Variant本身就是在数组这方面不好控制,因为不容易知道字节长度。

还有虽然VB默认传参是传地址,但保险起见还是把ByRef加上吧!
------解决方案--------------------
反正最后是要写入文件的,为什么不用一个临时文件存放一下,入库时从临时文件读呢?
------解决方案--------------------
Public Sub SaveData(vatDataStream As Variant)
ReDim vatDataStream (100, 10000)As Integer
End Sub

ReDim 把内存里面的所有数据都clear了!你写进去的恐怕都是0吧
------解决方案--------------------
ReDim vatDataStream () 中间加一个prsver
建议不要用Variant.
或者你可以新定义一个组,然后通过API:CopyMemory()复制进去