Поиск строки в массиве строк по значению

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

Поиск строки в массиве строк по значению

Сообщение Medved_ » 31.10.2005 (Пн) 18:02

Я уже задавал вопрос по теме про GUID.
Теперь стоит вопрос собрать это в какой-то список, по которому можно было бы искать.
Самое простейшее, что мне пришло на ум - создать массив и по нему вести поиск.

но тут я что-то недопонимаю.
Я создал экземпляр класса:
Код: Выделить всё
Private myArr_ As New mscorlib.ArrayList
- этот класс, насколько я понял, реализует интерфейс IList, в котором реализован метод IndexOf(); mscorlib - Common Language Runtime Library из .NET Framework.
Заполнил его:
Код: Выделить всё
myArr_.Add strGUID_
где strGUID_ - строковая переменная.
но при вызове:
Код: Выделить всё
myArr_.IndexOf(strGuid_)
получаю - Invalid procedure call or argument
Пробовал:
Код: Выделить всё
myArr_.IndexOf(ByVal strGuid_)
получаю - Type mismatch.

Кто мне подскажет - в чем я не прав и как надо сделать все правильно, что бы Метод IndexOf() заработал?

ЗЫ: Остальные методы интерфейса IList работают как часики... Да ж ByVal не требуется...
Последний раз редактировалось Medved_ 01.11.2005 (Вт) 9:06, всего редактировалось 1 раз.
With the BEST regards,
Medved.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 31.10.2005 (Пн) 18:11

Ну, для начала - постить вопросы по .NET в раздел по .NET.

Medved_
Новичок
Новичок
Аватара пользователя
 
Сообщения: 48
Зарегистрирован: 27.10.2005 (Чт) 11:12
Откуда: E-burg

Сообщение Medved_ » 31.10.2005 (Пн) 19:22

Ennor писал(а):Ну, для начала - постить вопросы по .NET в раздел по .NET.
Хмм... А я вообще-то с VB работаю! Мне из-под стандартного VB необходимо добиться нормальной работы вызова указанных функций!
With the BEST regards,
Medved.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 01.11.2005 (Вт) 9:40

Если строк не очень много, <10k, лучше создай ADODB.Recordset и ищи с помощью Filter.
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.11.2005 (Вт) 9:51

Либо используй коллекции.
Lasciate ogni speranza, voi ch'entrate.

Medved_
Новичок
Новичок
Аватара пользователя
 
Сообщения: 48
Зарегистрирован: 27.10.2005 (Чт) 11:12
Откуда: E-burg

Ответы

Сообщение Medved_ » 01.11.2005 (Вт) 9:55

2Antonariy: Спасибо. Нельзя их использовать по условиям задачи. :) Ибо получится переписываение самой БД. А нахфик мне это надо? ;)
2alibek: Какие? Пожалуйста "ткните носом"...
With the BEST regards,
Medved.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 01.11.2005 (Вт) 9:59

Какое еще переписывание бд? :shock:
Код: Выделить всё
Dim rs as New ADODB.Recordset
rs.Fields.Append "GUID", adVarChar, 50
rs.Open
For ....
rs.AddNew
rs!GUID = strGUID_
Next ...
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.11.2005 (Вт) 10:25

Ну, если желаешь.
Код: Выделить всё
Dim colVariables As Collection
...
Set colVariables = New Collection
colVariables.Add Key := "UserName", Item := "Medved_"
colVariables.Add Key := "UserAddress", Item := "E-burg"
...

MsgBox colVariables.Item("UserAddress")
Lasciate ogni speranza, voi ch'entrate.

Medved_
Новичок
Новичок
Аватара пользователя
 
Сообщения: 48
Зарегистрирован: 27.10.2005 (Чт) 11:12
Откуда: E-burg

Сообщение Medved_ » 01.11.2005 (Вт) 13:17

2Antonariy: Спасибо. Я воспользовался советом alibek. За что ему огромное сенк! :D
Тема закрыта. :wink:
With the BEST regards,
Medved.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.11.2005 (Вт) 14:00

Заранее замечу.
В ближайшее время ты спросишь, как узнать ключ (или индекс) элемента коллекции. Ответ: никак. Но можно схитрить, как например это сделал GSerg, т.е. добавляя не строку, а массив Array("value","key","index") и затем юзая .Item(...)(2).
Lasciate ogni speranza, voi ch'entrate.

Medved_
Новичок
Новичок
Аватара пользователя
 
Сообщения: 48
Зарегистрирован: 27.10.2005 (Чт) 11:12
Откуда: E-burg

Сообщение Medved_ » 02.11.2005 (Ср) 10:28

2alibek: Спасибо, Большой Человек! :) Но большего функционала, чем предоставляет Collection мне не требуется. :D
With the BEST regards,
Medved.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 129

    TopList