Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / (VB6) коллекции / 7 сообщений из 7, страница 1 из 1
19.09.2005, 16:06
    #33277087
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
не силен в VB6, подскажите как определить что в коллекции нет элемента с заданным ключем
необходимо добавить элемент если ключ в коллекции не найден

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

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

Код: 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
19.09.2005, 16:17
    #33277122
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
так то оно само собой понятно.
но зачем мне лишняя писанина?
мне надо было стандартными способами.
Нарыл что более подходящий класс в данном случае Dictionary.
для Collection только "ручной обход"
...
Рейтинг: 0 / 0
21.09.2005, 01:09
    #33280107
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
Роман Дынникнеобходимо добавить элемент если ключ в коллекции не найден
Ну так добавьте. Если свалитесь с ошибкой, значит, элемент с таким ключом уже был. Если не свалитесь, значит, вы его только что успешно добавили
Код: 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
21.09.2005, 07:27
    #33280195
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
По-другому никак.
Коллекция VB6 очень бедна.
Зато в VB.NET коллекции очень мощные. Там есть все.
...
Рейтинг: 0 / 0
21.09.2005, 09:16
    #33280291
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
Ennor Tiegael
Криво, согласен, но по-другому не получится. Причем я не припомню даже обходных путей для этого случая - только так.
Я же говорю что с использованием Dictionary все сделал. Спасибо всем.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.04.2012, 12:30
    #37765056
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VB6) коллекции
Роман Дынник,

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


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