1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| Function IsEmptyArray(V) As Boolean
On Error Resume Next
U = UBound(V)
IsEmptyArray = U = ""
End Function
Function NbDim%(V)
On Error Resume Next
Do
U& = UBound(V, N% + 1): If Err Then NbDim = N: Exit Do Else N = N + 1
Loop
End Function
Sub Array3Load(AR, FILE$)
Dim D&(1 To 3, 1 To 2), DP$(), SP$(), TL$()
If Dir(FILE) = "" Then Exit Sub
F% = FreeFile
Open FILE For Input As #F
TL = Split(Input(LOF(F), #F), vbNewLine)
Close #F
SP = Split(TL(0), "¤"): If UBound(SP) <> 3 Then Exit Sub
For L& = 1 To 3
DP = Split(SP(L), ":"): If UBound(DP) <> 1 Then Exit Sub
For F = 1 To 2: D(L, F) = DP(F - 1): Next
Next
ReDim AR(D(1, 1) To D(1, 2), D(2, 1) To D(2, 2), D(3, 1) To D(3, 2))
For L = 1 To UBound(TL)
SP = Split(TL(L), "=")
If UBound(SP) = 1 Then
DP = Split(SP(0), ":")
If UBound(DP) = 3 Then AR(DP(1), DP(2), DP(3)) = SP(1)
End If
Next
End Sub
Sub Array3Save(AR, FILE$)
If Dir(Left(FILE, InStrRev(FILE, Application.PathSeparator)), vbDirectory) = "" _
Or NbDim(AR) <> 3 Then Beep: Exit Sub
For D1& = 1 To 3: T$ = T$ & "¤" & LBound(AR, D1) & ":" & UBound(AR, D1): Next
For D1 = LBound(AR) To UBound(AR)
For D2& = LBound(AR, 2) To UBound(AR, 2)
For D3& = LBound(AR, 3) To UBound(AR, 3)
T = T & vbNewLine & ":" & D1 & ":" & D2 & ":" & D3 & "=" & AR(D1, D2, D3)
Next D3
Next D2
Next D1
F% = FreeFile
Open FILE For Output As #F
Print #F, T
Close #F
End Sub
Sub DemoEcrire()
Dim TB%(1 To 2, 3 To 4, 5 To 6)
For D1% = 1 To 2
For D2% = 3 To 4
For D3% = 5 To 6: TB(D1, D2, D3) = D1 * D2 * D3: Next
Next
Next
Array3Save TB, "D:\Tests\Array3.txt"
End Sub
Sub DemoLire()
Dim TB%()
Array3Load TB, "D:\Tests\Array3.txt"
If IsEmptyArray(TB) Then Beep: Exit Sub
For D1& = LBound(TB) To UBound(TB)
For D2& = LBound(TB, 2) To UBound(TB, 2)
For D3& = LBound(TB, 3) To UBound(TB, 3)
Debug.Print "(" & D1 & ", " & D2 & ", " & D3 & ") = " & TB(D1, D2, D3)
Next
Next
Next
End Sub |