Private Sub Form_Load()
Dim i, v, sample, colkey
Dim c As New Collection
Dim l As Long
List1.AddItem "Experiment using a user function like a built in language operator"
sample = Array("apple", "orange", "cat", "dog")
List1.AddItem "----- [ walk simple array ] -------"
Do While enumerate(i, v, sample)
List1.AddItem " Index: " & i & " Value: " & v
c.Add v
sample(i) = i
Loop
List1.AddItem " Array Values now: " & Join(sample, ", ")
List1.AddItem "----- [ walk array with long var enumerator ] -------"
'walk changed array, use long as enum variable (variant not required like for each)
Do While enumerate(i, l, sample)
List1.AddItem " Index: " & i & " Value: " & l
Loop
List1.AddItem "----- [ enum collection of simple values ] -------"
Do While enumerate(i, v, c)
List1.AddItem " Collection Index: " & i & " Value: " & v
Loop
Dim c1 As Class1 'class source: Public id
Set c = New Collection
'build up a collection of class objects..
For i = 0 To 3
Set c1 = New Class1
c1.id = i
c.Add c1, "key:" & i
Next
'note the i we pass in here will be 4 and not initilized...
'enumerate will detect the change in object and reset..
'there can be a case if we were using same collection as last
'enumerate call and i was not 0 we would be undefined behavior..
'note we can use a Class1 variable as our enumerator and is not required to be variant
'enumerator also supports enumerating the items collection key..not possible with for each..
List1.AddItem "----- [ walk obj collection with key and class obj var ] -------"
List1.AddItem "----- [ note i = " & i & " is unitilized ] -------"
Do While enumerate(i, c1, c, colkey)
List1.AddItem " Objs Index: " & i & " Class1 id: " & c1.id & " ColKey: " & colkey
Loop
sample = Array("apple", "orange", "cat", "dog")
List1.AddItem "----- [ bug test 1 - incomplete loop exit + same obj enum ] -------"
Do While enumerate(i, v, sample)
List1.AddItem " Index: " & i & " Value: " & v
If i = 1 Then Exit Do
Loop
List1.AddItem "----- [ first enum call exited, enum again same i same obj ] -------"
Do While enumerate(i, v, sample)
List1.AddItem " Index: " & i & " Value: " & v
Loop
List1.AddItem "----- [ ok maybe that is actually a feature..could be useful ] -------"
' List1.AddItem "----- [ bug test 2 - nesting = endless loop :( ] -------"
' 'and this will not work and do weird stuff..
' Do While enumerate(i, v, sample)
'
' List1.AddItem " Array Index: " & i & " Value: " & v
'
' Do While enumerate(i, c1, c, colkey)
' List1.AddItem " Objs Index: " & i & " Class1 id: " & c1.id & " ColKey: " & colkey
' Loop
'
' Loop
End Sub
Dim c1 As Class1
Do While enumerate(i, c1, c)
List1.AddItem "Objs Index: " & i & " class 1 id: " & c1.id
Loop