Проверить, существует ли запись в коллекции 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
Проверить, существует ли запись в коллекции VB6?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.