Программирование на 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
- Откуда: Литва/Висагинас
-
Demonx » 18.10.2011 (Вт) 21:01
Обратись к элементу коллекции в функции и лови ошибку
-
jangle
-
- Википедик
-
-
- Сообщения: 3013
- Зарегистрирован: 03.06.2005 (Пт) 12:02
- Откуда: Нидерланды
jangle » 18.10.2011 (Вт) 21:03
Demonx писал(а):Обратись к элементу коллекции в функции и лови ошибку
Ну этот кривой способ и так понятен, а разве нет более красивого метода проверить существует элемент или нет?
-
Хакер
-
- Телепат
-
-
- Сообщения: 16478
- Зарегистрирован: 13.11.2005 (Вс) 2:43
- Откуда: Казахстан, Петропавловск
-
Хакер » 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
- Откуда: Нидерланды
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-бот, Mail.ru [бот] и гости: 51