我在VB6中有一个包含数千个字符串的Variant。
我也有一个固定长度的数组。
我需要比较每个内容并添加与列表匹配的内容。
if array(i) = variant(1,i) then
'add to list
End if
我无法弄清楚如何正确地迭代这两个以便进行比较,因为我用来迭代Variant()的方法在遍历每个项目后停止。因此,它永远不会检查是否有任何项目等于数组中的i + 1.
Private Sub dp_Click()
Dim fArray
fArray = Array("a", "b", "c")
LstAPens.ListItems.Clear
LstUPens.ListItems.Clear
For x = 0 To UBound(fArray)
Dim i As Long, m As Integer
'Do Until batcharray(0, i) = "End"
' tmpArray(i) = UCase(batcharray(1, i))
'Loop
Do Until batcharray(0, i) = "End"
If (InStr(1, UCase(batcharray(1, i)), UCase(fArray(x))) > 0) Then
LstAPens.ListItems.Add
With LstAPens.ListItems(m + 1)
.SubItems(1) = batcharray(1, i) 'Tagname
End With
m = m + 1
End If
i=i+1
Loop
Next x
End Sub
我尝试将Variant转换为数组,但它不起作用。
找到的唯一项目是数组中的第一个项目,然后Variant在到达结尾时不再迭代。
如何在此示例中迭代名为batchArray的Variant,并将其与数组的内容进行比较?
答案 0 :(得分:4)
这实际上不是 1,000
5%
问题,它只是一个循环/控制变量问题。
即使您的主循环中有您的DIM语句,VB也不会将其视为"重新声明"并在UNTIL循环之前重置/重新初始化其值。结果,'我'将增加到1,然后在外部循环的迭代之间保留其值,从而保持在batchArray中的单个值上,并且迭代停止。
将声明移到循环之外,在Variant
循环之前将其重置为0,看看是否能解决问题:
UNTIL