Open "c:\test.dat" For Binary Access Write As #1 ' Save the file.
redim arrTmp(ubound(my_fjb_fj)-lbound(my_fjb_fj)-12) as byte
dim i as long
    for i=lbound(my_fjb_fj) to ubound(my_fjb_fj)
        arrTmp(i-lbound(my_fjb_fj))=my_fjb_fj(i+12)
    next i
     Put #1, , arrTmp
     Close #1
     

解决方案 »

  1.   

    (1)必须采用写临时文件倒数据的方法
    如果单纯用循环赋值,会丢失数据
    (2)这个my_fjb_fj变量,后面的字节数很多
    比如20k-90k左右,能不能不用循环?
      

  2.   

    用循环赋值,会丢失数据?不会吧
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Private Sub Command1_Click()
      Dim b(10) As Byte
      Dim c(10) As Byte
      b(0) = 100
      b(1) = 200
      b(2) = 100
      Call CopyMemory(c(0), b(1), 10)
      Stop
    End Sub
      

  3.   

    至于你说的丢失数据,我估计你使用vb的string类型,在中文操作系统的vb中,string类型变量中128-255的字符会自动变成0,可能造成你说的数据丢失。
      

  4.   

    不是的,主要是,这个
    my_fjb_fj数组是来自access数据库的一个ole字段...
    这个数组里面,有ascii码的'\0',
    所以,如果用循环赋值,总是造成一些元素丢失..如果采用写临时文件,再读出来,赋给一个变量,就可以个完整的得到这个数组我现在,就想,通过临时文件,得到这个my_fjb_fj数组从13个字节到最后的字节数,请问该如何作???这个,写临时文件的步骤不能省略。。
      

  5.   

    '读临时文件
         arrLen = FileLen("c:\\test.dat")
         ReDim arrTmp(0 To arrLen-13) As Byte
         Open "c:\\test.dat" For Binary Access Read As #2 ' read the file.
             Get #2, 13, arrTmp
         Close #2