Private Type ss1 a As String b As Integer End TypePrivate Type ss2 a As String b As Integer c As Integer End TypePrivate Type ss3 a As String b As Integer c As Integer d As Single End TypePrivate Type ss4 a(1 To 5) As ss1 b(1 To 5) As ss2 c As ss3 End TypePrivate Sub Command1_Click() '利用tmp4做中间变量,就可以方便存取 Dim tmp1(1 To 5) As ss1 Dim tmp2(1 To 5) As ss2 Dim tmp3 As ss3 Dim tmp4 As ss4
Dim i As Integer
'给变量赋值 For i = 1 To 5 tmp1(i).a = "A" & i tmp1(i).b = i tmp2(i).a = "B" & i tmp2(i).b = i tmp2(i).c = i Next tmp3.a = "C" tmp3.b = 100 tmp3.c = 200 tmp3.d = 9.9
'把三个自定义类型传给tmp4 For i = 1 To 5 tmp4.a(i).a = tmp1(i).a tmp4.a(i).b = tmp1(i).b tmp4.b(i).a = tmp2(i).a tmp4.b(i).b = tmp2(i).b tmp4.b(i).c = tmp2(i).c Next tmp4.c.a = tmp3.a tmp4.c.b = tmp3.b tmp4.c.c = tmp3.c tmp4.c.d = tmp3.d
'把自定义变量内容存入c:\temp.bin Open "c:\temp.bin" For Random As #1 Len = Len(tmp4) Put #1, , tmp4 Close #1
'清除变量内容 For i = 1 To 5 tmp1(i).a = "" tmp1(i).b = 0 tmp2(i).a = "" tmp2(i).b = 0 tmp2(i).c = 0 Next tmp3.a = "" tmp3.b = 0 tmp3.c = 0 tmp3.d = 0
For i = 1 To 5 tmp4.a(i).a = tmp1(i).a tmp4.a(i).b = tmp1(i).b tmp4.b(i).a = tmp2(i).a tmp4.b(i).b = tmp2(i).b tmp4.b(i).c = tmp2(i).c Next tmp4.c.a = tmp3.a tmp4.c.b = tmp3.b tmp4.c.c = tmp3.c tmp4.c.d = tmp3.d
'读取自定义变量内容给tmp4 Open "c:\temp.bin" For Random As #1 Len = Len(tmp4) Get #1, , tmp4 Close #1
'把tmp4的内容传给三个自定变量 For i = 1 To 5 tmp1(i).a = tmp4.a(i).a tmp1(i).b = tmp4.a(i).b tmp2(i).a = tmp4.a(i).a tmp2(i).b = tmp4.b(i).b tmp2(i).c = tmp4.b(i).c Next tmp3.a = tmp4.c.a tmp3.b = tmp4.c.b tmp3.c = tmp4.c.c tmp3.d = tmp4.c.d
Private Type ss1
a As String
b As Integer
End TypePrivate Type ss2
a As String
b As Integer
c As Integer
End TypePrivate Type ss3
a As String
b As Integer
c As Integer
d As Single
End TypePrivate Type ss4
a(1 To 5) As ss1
b(1 To 5) As ss2
c As ss3
End TypePrivate Sub Command1_Click()
'利用tmp4做中间变量,就可以方便存取
Dim tmp1(1 To 5) As ss1
Dim tmp2(1 To 5) As ss2
Dim tmp3 As ss3
Dim tmp4 As ss4
Dim i As Integer
'给变量赋值
For i = 1 To 5
tmp1(i).a = "A" & i
tmp1(i).b = i
tmp2(i).a = "B" & i
tmp2(i).b = i
tmp2(i).c = i
Next
tmp3.a = "C"
tmp3.b = 100
tmp3.c = 200
tmp3.d = 9.9
'把三个自定义类型传给tmp4
For i = 1 To 5
tmp4.a(i).a = tmp1(i).a
tmp4.a(i).b = tmp1(i).b
tmp4.b(i).a = tmp2(i).a
tmp4.b(i).b = tmp2(i).b
tmp4.b(i).c = tmp2(i).c
Next
tmp4.c.a = tmp3.a
tmp4.c.b = tmp3.b
tmp4.c.c = tmp3.c
tmp4.c.d = tmp3.d
'把自定义变量内容存入c:\temp.bin
Open "c:\temp.bin" For Random As #1 Len = Len(tmp4)
Put #1, , tmp4
Close #1
'清除变量内容
For i = 1 To 5
tmp1(i).a = ""
tmp1(i).b = 0
tmp2(i).a = ""
tmp2(i).b = 0
tmp2(i).c = 0
Next
tmp3.a = ""
tmp3.b = 0
tmp3.c = 0
tmp3.d = 0
For i = 1 To 5
tmp4.a(i).a = tmp1(i).a
tmp4.a(i).b = tmp1(i).b
tmp4.b(i).a = tmp2(i).a
tmp4.b(i).b = tmp2(i).b
tmp4.b(i).c = tmp2(i).c
Next
tmp4.c.a = tmp3.a
tmp4.c.b = tmp3.b
tmp4.c.c = tmp3.c
tmp4.c.d = tmp3.d
'读取自定义变量内容给tmp4
Open "c:\temp.bin" For Random As #1 Len = Len(tmp4)
Get #1, , tmp4
Close #1
'把tmp4的内容传给三个自定变量
For i = 1 To 5
tmp1(i).a = tmp4.a(i).a
tmp1(i).b = tmp4.a(i).b
tmp2(i).a = tmp4.a(i).a
tmp2(i).b = tmp4.b(i).b
tmp2(i).c = tmp4.b(i).c
Next
tmp3.a = tmp4.c.a
tmp3.b = tmp4.c.b
tmp3.c = tmp4.c.c
tmp3.d = tmp4.c.d
End Sub但希望你好好理解,尽快结贴。
如果包含数组、字符串甚至对象,则最好使用属性包进行读取。
谢谢七楼!To 八楼: 结构体内有定长字符串,其他就是数字,用CopyMemory试过了,老是造成程序崩溃,可能是我使用不当。现在我换了一种方式,写入XML里面了,不纠缠这个问题了,谢谢大家。