Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Сортировка массива в MS VB 6.0


Автор: Alexxxander 9.8.2005, 09:07
Как можно отсортировать двумерный (впрочем, и одномерный) массив? Точнее, таблицу. Например:
Код
Dim a
a = Array(Array("1", 12, 13), Array("2", 22, 23), Array("3", 32, 33))

Это маленький кусок массива, на самом деле он может содержать сотни значений. В нем есть столбцы разного типа. Нужно отсортировать по третьей колонке (13,23,33). А внутри -- по 2й колонке (12,22,32).
В Excel, если массив находится в ячейках таблицы, это легко сделать методом Sort.
А как это сделать в обычном VB?

Автор: Akina 9.8.2005, 10:06
VB не имеет встроенных функций/процедур для сортировки массивов.

Варианты:

1) Самостоятельно выполнить сортировку. Исходники берем на algolist и адаптируем под задачу.
2) Затолкать массив в объект, имеющий методы сортировки, и воспользоваться ими.

Автор: Guest 9.8.2005, 13:46
Спасибо.
Цитата(Akina @ 9.8.2005, 10:06)
2) Затолкать массив в объект, имеющий методы сортировки, и воспользоваться ими

А какие объекты могут подойти для этого дела?

Автор: cardinal 9.8.2005, 16:33
Цитата(Guest @ 9.8.2005, 11:46)
А какие объекты могут подойти для этого дела?

Ну например ListBox
Пишешь:
Код

Private Sub Command1_Click()
List1.AddItem "z"
List1.AddItem "f"
List1.AddItem "b"
List1.AddItem "c"
List1.AddItem "a"
End Sub

Запускаешь, смотришь. Потом изменяешь свойство ListBox'a Sorted на True и запускаешь тоже самое еще раз. Видишь результат. smile

Автор: Akina 9.8.2005, 16:41
Но я бы все-таки сортировал сам. А если за элементами массива числится какой-то реальный смысл - сделал бы коллекционный класс с методом Sort.

Автор: cardinal 9.8.2005, 16:47
Тем более, что QSort'ами всякими весь форум завален: smile
см. поиск:
http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=c6c7a6a6f297a219ec694f8642492105&search_in=posts&result_type=topics&highlite=sort
Например тут Vach постарался smile
http://forum.vingrad.ru/index.php?showtopic=16854
или тут
http://forum.vingrad.ru/index.php?showtopic=24655

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)