Коллекции

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

Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 12:25

Добрый день!
Возник такой вопрос.
Есть к примеру коллекция с именем C. Добавляем к примеру один айтем, в качестве ключа будет строка, а в качестве значения еще одна коллекция. Так вот заранее неизвестно сколько надо будет добавить айтемов. А коллекция как известно содержит только ссылку на обьект, т.е. мне нужно заранее обьявлять "вложенные коллекции", а сколько их надо будет неизвестно. Буду рад советам. Спасибо

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

Re: Коллекции

Сообщение alibek » 07.09.2009 (Пн) 13:07

Вопрос отсутствует.
Lasciate ogni speranza, voi ch'entrate.

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Re: Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 13:21

Вопрос - как это реализовать? Или подход в корне неверный?

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

Re: Коллекции

Сообщение alibek » 07.09.2009 (Пн) 13:53

Реализовать обыкновенно, добавлять в коллекции вложенные коллекции.
В чем вопрос?
Lasciate ogni speranza, voi ch'entrate.

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Re: Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 14:07

Вот к примеру обьявляю я

Код: Выделить всё
Dim colMain as new Collection
Dim colNested as new Collection


добавляю что-то в colNested
Код: Выделить всё
colNested.Add "some string1"
colNested.Add "some string2"

etc.
Потом

Код: Выделить всё
colMain.Add colNested

Затем допустим очищаю colNested и по новой
Код: Выделить всё
colNested.Add "some string3"
colNested.Add "some string4"


и еше раз

Код: Выделить всё
colMain.Add colNested


Что будет тогда в colMain.Item(1)?
Данные ведь не в самой коллекции храняться, а только ссылка на colNested, а ее содержимое уже изменилось.
А обьявить dim colNested1, colNested2 и т.д. не получится я же не знаю сколько их надо будет

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Коллекции

Сообщение Денис » 07.09.2009 (Пн) 14:08

_igor_ писал(а):Буду рад советам. Спасибо

Зачем объявлять заранее? Это ж бейсик! Объявляй по мере необходимости на месте.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Re: Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 14:14

Денис писал(а):
_igor_ писал(а):Буду рад советам. Спасибо

Зачем объявлять заранее? Это ж бейсик! Объявляй по мере необходимости на месте.

А это как?

Niko
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 102
Зарегистрирован: 16.03.2006 (Чт) 14:43

Re: Коллекции

Сообщение Niko » 07.09.2009 (Пн) 14:22

Что будет тогда в colMain.Item(1)?

там будет измененная коллекция colNested, как и в colMain.Item(2)

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Re: Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 14:27

Niko писал(а):
Что будет тогда в colMain.Item(1)?

там будет измененная коллекция colNested, как и в colMain.Item(2)

Да. А надо чтоб была не измененная. Значит надо добавлять каждый раз новую коллекцию с новым содержимым в colMain. А где их взять?) Если не известно сколько их понадобиться.

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

Re: Коллекции

Сообщение Хакер » 07.09.2009 (Пн) 14:28

Автор, ты понимаешь, что Dim x As New yyy, это совсем не то же самое, что:
Код: Выделить всё
Dim x as yyy
set x = New yyy


Автор, ты знаешь, что ты можешь делать так: colParent.Add "child1", New Collection?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Re: Коллекции

Сообщение _igor_ » 07.09.2009 (Пн) 14:31

Хакер писал(а):Автор, ты понимаешь, что Dim x As New yyy, это совсем не то же самое, что:
Код: Выделить всё
Dim x as yyy
set x = New yyy




Автор, ты знаешь, что ты можешь делать так: colParent.Add "child1", New Collection?


В книге написано это то же самое.
Спасибо Хакер! Только местами надо поменять colParent.Add New Collection, "child1"
Все работает спасибо еще раз!

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

Re: Коллекции

Сообщение Хакер » 07.09.2009 (Пн) 15:08

Такую книгу в печку без раздумий.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

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

    TopList