You can use the following code to load a text file like:into a collection likeCode:Key1 "Value1" Key2 "Value2" Key3 { Key4 "Value3" Key5 { Key6 "Value4" Key7 "Value5" } } Key8 "Value6"Here is the sub:Code:c(Key1) = Value1 c(Key2) = Value2 c(Key3)(Key4) = Value3 c(Key3)(Key5)(Key6) = Value4 c(Key3)(Key5)(Key7) = Value5 c(Key8) = Value6And here is an exampleVB Code:
Sub LoadConfig(ByVal Config As String, ByRef PassedCollection As Collection) Dim i As Integer Dim Binary As String Dim c() As Collection Dim BufferingKey() As Boolean Dim BufferingVal() As Boolean Dim Key() As String Dim Val() As String i = FreeFile Open Config For Binary As i Binary = Space(LOF(i)) Get i, , Binary Close i Binary = Replace(Binary, vbCrLf, "") Binary = Replace(Binary, " ", "") i = 0 ReDim c(i) ReDim BufferingKey(i) ReDim BufferingVal(i) ReDim Key(i) ReDim Val(i) Set c(i) = New Collection BufferingKey(i) = True Do While Len(Binary) > 0 Select Case Mid(Binary, 1, 1) Case "{" i = i + 1 ReDim Preserve c(i) ReDim Preserve BufferingKey(i) ReDim Preserve BufferingVal(i) ReDim Preserve Key(i) ReDim Preserve Val(i) Set c(i) = New Collection BufferingKey(i) = True Case "}" i = i - 1 c(i).Add c(i + 1), Key(i) Key(i) = "" Val(i) = "" Case """" If BufferingVal(i) Then c(i).Add Val(i), Key(i) Key(i) = "" Val(i) = "" End If BufferingKey(i) = IIf(BufferingKey(i), False, True) BufferingVal(i) = IIf(BufferingVal(i), False, True) Case Else If BufferingKey(i) Then: Key(i) = Key(i) & Mid(Binary, 1, 1) If BufferingVal(i) Then: Val(i) = Val(i) & Mid(Binary, 1, 1) End Select Binary = Mid(Binary, 2) Loop Set PassedCollection = c(0) End Sub
VB Code:
Private Sub Form_Load() Dim c As Collection LoadConfig App.Path & "\test.txt", c Debug.Print "c(Key1) = " & c("Key1") Debug.Print "c(Key2) = " & c("Key2") Debug.Print "c(Key3)(Key4) = " & c("Key3")("Key4") Debug.Print "c(Key3)(Key5)(Key6) = " & c("Key3")("Key5")("Key6") Debug.Print "c(Key3)(Key5)(Key7) = " & c("Key3")("Key5")("Key7") Debug.Print "c(Key8) = " & c("Key8") End Sub




Reply With Quote