powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / (VB6) коллекции
7 сообщений из 7, страница 1 из 1
(VB6) коллекции
    #33277087
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не силен в VB6, подскажите как определить что в коллекции нет элемента с заданным ключем
необходимо добавить элемент если ключ в коллекции не найден

пробовал
IsEmpty(arr.Item(key))
IsNull(arr.Item(key))
Nothing
вылетает в ошибку

Код: plaintext
1.
Dim arr As New Collection
if arr.Item(key)=Nothing...???
...
Рейтинг: 0 / 0
(VB6) коллекции
    #33277108
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Function ExistsItem(m_key) As clsItem
    On Error GoTo errh:
    Set ExistsItem = MyCol.Item(m_key)
    
errh:
Set ExistsItem = Nothing
End Function

if not ExistsItem("K0") is Nothing then ...
...
Рейтинг: 0 / 0
(VB6) коллекции
    #33277122
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так то оно само собой понятно.
но зачем мне лишняя писанина?
мне надо было стандартными способами.
Нарыл что более подходящий класс в данном случае Dictionary.
для Collection только "ручной обход"
...
Рейтинг: 0 / 0
(VB6) коллекции
    #33280107
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникнеобходимо добавить элемент если ключ в коллекции не найден
Ну так добавьте. Если свалитесь с ошибкой, значит, элемент с таким ключом уже был. Если не свалитесь, значит, вы его только что успешно добавили
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
dim V as CSubClass
' Disable SEH
on error resume next
set V = Col.Add(varItem, strKey)
' Check for error
if err.number <>  0 
  ' Already exists
  set V = nothing
  err.clear
else
  ' All OK
end if
' Enable SEH
on error goto ...
Криво, согласен, но по-другому не получится. Причем я не припомню даже обходных путей для этого случая - только так.
...
Рейтинг: 0 / 0
(VB6) коллекции
    #33280195
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-другому никак.
Коллекция VB6 очень бедна.
Зато в VB.NET коллекции очень мощные. Там есть все.
...
Рейтинг: 0 / 0
(VB6) коллекции
    #33280291
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
Криво, согласен, но по-другому не получится. Причем я не припомню даже обходных путей для этого случая - только так.
Я же говорю что с использованием Dictionary все сделал. Спасибо всем.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
(VB6) коллекции
    #37765056
palladin600
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник,

для Dictionary надо подключать Microsoft Scripting Runtime
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / (VB6) коллекции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]