Dim FileHeader(200) As Byte
Call CopyMemory(FileHeader(0), pStreamBuf, Length)提示“下标越界”,请问何故?
pStreambuf是一个地址,从另外的函数得到的,想把这个地址的内容搞出来,length是一个常数40,应该如何做???

解决方案 »

  1.   

    Option Explicit
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Dim Sourcearray(200) As Byte
    Private Sub Command1_Click()
        Dim FileHeader(200) As Byte
        Dim pStreamBuf As Long, mLength As Long
        mLength = 40
        pStreamBuf = VarPtr(Sourcearray(0))
        Call CopyMemory(FileHeader(0), pStreamBuf, mLength)
        Dim i As Long
        For i = 0 To 40
            Debug.Print FileHeader(i)
        Next
    End SubPrivate Sub Form_Load()
        Dim i As Long
        For i = 0 To 200
            Sourcearray(i) = i
        Next
    End Sub
      

  2.   

    Try:Call CopyMemory(FileHeader(0), ByVal pStreamBuf, Length)
      

  3.   

    还有一个问题啊,把缓存写入到文件用了put()函数,但是由于只要写缓存中的一部分,但是put不能指定写的长度,该怎么办?有解决办法吗?就像VC里面的write函数那么就好了~