Массив массивов или список списков

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

Массив массивов или список списков

Сообщение xolod » 29.11.2004 (Пн) 6:25

Делаю таки контрол для своего плеера, чтобы не тратить кучу памяти, решил юзать один листбокс и tabstrip. С помощью него ничего не добавлять-удалять, а использовать его только для вывода данных и реагирования на события

Идея
Создаем пользовательский тип, примерно такой:
Код: Выделить всё
Type PlaylistItem
  piTitle As String
  piAritst As String
  piAlbum As String
  piFullpath As String
End Type


Полей там куча, но это не важно, дальше объявим массив этих типов, чтобы в списке можно было хранить несколько треков
Код: Выделить всё
PlaylistItems() As PlaylistItem


Но! По моему желанию списков должно быть несколько (ну не должно, но должна быть возможность создать несколько списков).. Как быть?, как вариант, создать несколько массивов, один - списки, второй, элементы списков.. Но тогда создаются большие проблемы с управлением таким массивом, куда будут свалены все элементы всех списоков... Возможно, решение на поверхности, но я его что-то не вижу :lol:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 29.11.2004 (Пн) 7:22

Делаешь класс, у него - единственное публичное свойство типа Variant, возвращает твой массив. В проге делаешь массив таких классов.
Подходит?
Изображение

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 29.11.2004 (Пн) 7:33

На первый взгляд подходит, потому СПАСИБО.. Говорю же, вроде на поверхности, но в 6 утра мозги совсем уже не варят :lol:, а как они еще подумают, что через 3 часа на работу, так вообще плохо становиться :roll:...

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение alibek » 29.11.2004 (Пн) 12:45

Есть еще возможность заценить возможности Variant; попробуй V = Array(Array(Array(1,2,3),2),Array(3,4,5)).
Но вариант с классами лучше.
Lasciate ogni speranza, voi ch'entrate.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 29.11.2004 (Пн) 13:20

Многомерные массивы не подходят по описанным причинам...

К тому же, в связи с особенностями архитектуры visual basic массивы в нем не являются разряженными (т.е. пустые элементы "весят" столько же, сколько и занятые)... А задача то как раз уменьшить кол-во используемых ресурсов :lol:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

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

Сообщение Ennor » 29.11.2004 (Пн) 17:37

Я бы сделал двойную коллекцию, честно говоря. Причем все в одной куче: родительский список - список плей-листов, дочерний - все айтемы вперемешку, но у каждого есть ParentId. Если вытаскивать через For Each, то будет работать неплохо. Зато - коренное решение проблемы удаления элемента из середины.


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

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

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

    TopList