我在程序中有个结构体,在结构体中包括若干不定长数组,例如test() as double,数组大小在程序运行后才能确定。目前的问题是,我用put语句保存这个结构体时发现,只保存了这个数组的地址(长度4),并没有保存数据,请问有什么办法保存这些数组内容到dat文件中?

解决方案 »

  1.   

    [code=V]BOption Explicit
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSrc As Any, ByVal ByteLen As Long)Private Sub Command1_Click()
    Dim fNo As Integer
    Dim a() As Double
    Dim b() As Double
    Dim t() As Byte
    Dim l As LongReDim a(3) As Double
    Dim i As Integer
    For i = 0 To 3
        a(i) = Rnd() * 10
        Debug.Print a(i)
    Next'写入
    fNo = FreeFile()
    l = (UBound(a) + 1) * 8
    ReDim t(l - 1) As Byte
    CopyMemory t(0), a(0), l
    Open "e:\a.data" For Binary As fNo
        Put #fNo, , t()
    Close #fNo'读出
    fNo = FreeFile()
    Open "e:\a.data" For Binary As fNo
        l = LOF(fNo)
        ReDim t(l - 1) As Byte
        Get #fNo, , t()
    Close #fNo
    ReDim b(l \ 8 - 1) As Double
    CopyMemory b(0), t(0), lDebug.Print UBound(b)
    For i = 0 To UBound(b)
        Debug.Print b(i)
    NextEnd Sub[/code]
      

  2.   

    求代码分享。
    我不知道怎么保存带有动态数组的结构体数据到文件。
    for random ?  for binary ?