比较数组中的项和VB6中变体中的项



我在VB6中有数千个字符串的变体。

我也有一个固定长度的数组

我需要比较每个的内容,并将匹配的内容添加到列表中。

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进行迭代。

我如何在这个例子中迭代名为batchArray的变体,并将其与数组的内容进行比较?

这真的不是一个Variant问题,它只是一个循环/控制变量的问题。

即使在主循环中有DIM语句,VB也不会将其视为"重新声明"并在UNTIL循环之前重置/重新初始化其值。因此,'i'将增加到1,然后在外部循环的迭代之间保留其值,因此仍然停留在batchArray中的单个值上,迭代停止。

将声明移出循环,在UNTIL循环之前将其重置为0,看看这是否解决了您的问题:

Dim i as Long
For x = 0 To UBound(fArray)
    Dim m As Integer
    i = 0
    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

相关内容

  • 没有找到相关文章

最新更新