Существует ли элемент коллекции?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Существует ли элемент коллекции?

Сообщение jangle » 18.10.2011 (Вт) 20:36

Есть ли способ узнать существует ли элемент коллекции, если есть его ключ
Что то типа такого

Код: Выделить всё
Dim Col As New Collection
Col.Add "X1", "1"
Col.Add "X2", "2"
Col.Add "X3", "3"
If Col("4") Is Nothing Then
   MsgBox "XXX"
End If

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Re: Существует ли элемент коллекции?

Сообщение Demonx » 18.10.2011 (Вт) 21:01

Обратись к элементу коллекции в функции и лови ошибку
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Существует ли элемент коллекции?

Сообщение jangle » 18.10.2011 (Вт) 21:03

Demonx писал(а):Обратись к элементу коллекции в функции и лови ошибку


Ну этот кривой способ и так понятен, а разве нет более красивого метода проверить существует элемент или нет?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Существует ли элемент коллекции?

Сообщение Хакер » 18.10.2011 (Вт) 21:17

jangle писал(а):Ну этот кривой способ и так понятен

Кривость метода спорна.

jangle писал(а):а разве нет более красивого метода проверить существует элемент или нет?

В Collection нет, в Dictionary есть.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Существует ли элемент коллекции?

Сообщение jangle » 18.10.2011 (Вт) 22:04

Ок, понятно. Я вообще-то использую коллекцию для кеширования запросов к БД. Программа дергает базу через функцию GetNote, подгружая куски данных по 1-2 Мб из базы. Мне интересно, насколько быстро такой код сожрет всю доступную оперативку?

Код: Выделить всё
Public Function GetNote(ByVal TheID As Long) As String

Dim rc As Recordset
Dim SqlStr As String
Dim txt As String
On Error Resume Next
   
txt = CacheNote(Str$(TheID))
  If txt <> "" Then
  GetNote = CacheNote(Str$(TheID))
  Exit Function
End If
     
    SqlStr = "SELECT nNote FROM Notes WHERE ID = " & TheID
    Set rc = db.OpenRecordset(SqlStr, dbOpenSnapshot, dbReadOnly)
     If (rc.RecordCount) Then
        GetNote = rc("nNote")
        CacheNote.Add GetNote, Str$(TheID)
    End If
   
    Call rc.Close
    Set rc = Nothing   
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 48

    TopList