Проверить, существует ли запись в коллекции VB6?

@Mark Biek Ваш keyExists java-collections-api точно соответствует моей java-collections-api стандартной функции Exists(). Чтобы java-collections-api сделать класс более полезным collections для коллекций, предоставляемых vb-classic COM, и проверки числовых vb-classic индексов, я бы рекомендовал collections изменить sKey и myCollection, чтобы java-collections-api они не печатались. Если функция collections будет использоваться с коллекцией vb-classic объектов, требуется 'set' (в collections строке, где установлено val).

РЕДАКТИРОВАТЬ: Меня vb-classic беспокоило, что я никогда collections не замечал разных требований vb-classic к объектной и стоимостной java-collections-api функциям Exists(). Я очень java-collections-api редко использую коллекции collection для не-объектов, но это казалось collection идеальным узким местом для java-collections-api ошибки, которую было бы так collections сложно отследить, когда мне collection нужно было проверить ее существование. Поскольку vb6 обработка ошибок завершится collections ошибкой, если обработчик collection ошибок уже активен, для получения java-collections-api новой области действия ошибки collection требуются две функции. Всегда collections нужно вызывать только функцию vb6 Exists():

Public Function Exists(col, index) As Boolean
On Error GoTo ExistsTryNonObject
    Dim o As Object

    Set o = col(index)
    Exists = True
    Exit Function

ExistsTryNonObject:
    Exists = ExistsNonObject(col, index)
End Function

Private Function ExistsNonObject(col, index) As Boolean
On Error GoTo ExistsNonObjectErrorHandler
    Dim v As Variant

    v = col(index)
    ExistsNonObject = True
    Exit Function

ExistsNonObjectErrorHandler:
    ExistsNonObject = False
End Function

И для проверки работоспособности:

Public Sub TestExists()
    Dim c As New Collection

    Dim b As New Class1

    c.Add "a string", "a"
    c.Add b, "b"

    Debug.Print "a", Exists(c, "a") ' True '
    Debug.Print "b", Exists(c, "b") ' True '
    Debug.Print "c", Exists(c, "c") ' False '
    Debug.Print 1, Exists(c, 1) ' True '
    Debug.Print 2, Exists(c, 2) ' True '
    Debug.Print 3, Exists(c, 3) ' False '
End Sub

vb6

collections

2022-07-06T00:43:11+00:00