Есть ли аналог collection?

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

Есть ли аналог collection?

Сообщение Inferno » 15.03.2005 (Вт) 2:33

Решил поюзать вроде удобно, но тормозами напрягает. Есть ли какой-то аналог побыстрее?
Просто не охота возится с пересчетом индексов.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 15.03.2005 (Вт) 3:37

А что за єлементы колекции? А то у меня - через For each … in - вполне сносно работает! :roll:
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Сообщение Faust » 15.03.2005 (Вт) 8:05

Ну, если добавление/удаление элементов производится часто, а обращение к ним происходит последовательно, то можно написать простенький список из элементов a la:
Код: Выделить всё
Private Type RefElement
Value As Long 'ссылка на адрес нужного значения
Next As Long 'ссылка на адрес следущего элемента списка
End Type
Листинги не горят!

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 15.03.2005 (Вт) 10:46

Тут дело не в считывании элементов коллекции, а в их обновлении.
К сожалению элемент коллекции можно только пересоздать с новыми значениями(я пока друго пути не знаю), то есть если у нас есть 3 элемента коллекции то чтобы изменить значения 2 я должен его сначала удалить, а потом вставить перед вторым (старым 3)

При этом происходит ненужные 2 пересчета индексов , удаление и добавление элемента.

Мне надо просто пересчитывать значения элементов. Когда их мало никаких проблем не возникает даже в таком использовании.

При большом количестве элементов начинаются тормоза. В моем тесте элементов было порядка 5 тысяч. Я конечно сомневаюсь что мне когда-то понадобится такое количество, но все же интересно.

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

Сообщение alibek » 15.03.2005 (Вт) 11:54

Поищи коллекции Emorcillo (вроде бы так).
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.03.2005 (Вт) 16:12

Inferno писал(а):Тут дело не в считывании элементов коллекции, а в их обновлении.К сожалению элемент коллекции можно только пересоздать с новыми значениями(я пока друго пути не знаю),


В смысле? Любой элемент коллекции можно всегда использовать, в том числе и изменять его значение.

Inferno писал(а):При большом количестве элементов начинаются тормоза. В моем тесте элементов было порядка 5 тысяч. Я конечно сомневаюсь что мне когда-то понадобится такое количество, но все же интересно.


А есть еще такая коллекция как Recordset (см. ADO). Объекты в нее, кстати, тоже помещаются - см. приложенный файлик.
Вложения
ObjADO.rar
(2.3 Кб) Скачиваний: 18
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 15.03.2005 (Вт) 17:45

Andrey Fedorov писал(а):
Inferno писал(а):Тут дело не в считывании элементов коллекции, а в их обновлении.К сожалению элемент коллекции можно только пересоздать с новыми значениями(я пока друго пути не знаю),


В смысле? Любой элемент коллекции можно всегда использовать, в том числе и изменять его значение.

В смысле? Я как не пробовал изменить напрямую элемент коллекции так и не смог. Может ruki.sys поправить нужно?
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.03.2005 (Вт) 17:49

Ruslan Demidow писал(а):В смысле? Я как не пробовал изменить напрямую элемент коллекции так и не смог. Может ruki.sys поправить нужно?


Да, видимо дело в указанном тобой драйвере. В коллекции Controls у формы находятся контролы. Их значения менять ведь ты можешь. Так?

Аналогично должен суметь сделать это и в своей коллекции.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение alibek » 15.03.2005 (Вт) 17:54

col.Add "key1", "item1"

Попробуй потом изменить ключ добавленного элемента, кроме как удалив его и создав заново.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.03.2005 (Вт) 17:58

alibek писал(а):col.Add "key1", "item1"

Попробуй потом изменить ключ добавленного элемента, кроме как удалив его и создав заново.


А зачем менять ключ-то в стандартной коллекции :?:
Может лучше поменять что-то в алгоритме программы :?:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


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

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

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

    TopList