Страница 1 из 1

Массив массивов на VB6

Добавлено: 17 июн 2009, 03:15
SuperBot
В процессе программирования на VB6 и параллельно его изучения нарыл единственную наверное справку на русском MSDN 2008. Только вот боюсь что самые нужные приведенные там возможности неприменимы в VB6 и предназначены только для Visual Basic 2008. Дома то я могу установить Visual Basic 2008, но на работе в домене установлены ограничения на права пользователей и поэтому пользуюсь портативной версией VB6. А вопрос кроется в следующем, цитата:
"В следующем примере объявляется переменная массива для создания массива массивов с элементами Тип данных Double (Visual Basic). Каждый элемент массива sales является массивом, представляющим собой месяц. В каждом массиве месяца хранятся значения для всех дней в этом месяце.

Dim sales()() As Double = New Double(11)() {}
Dim month As Integer
Dim days As Integer
For month = 0 To 11
days = DateTime.DaysInMonth(Year(Now), month + 1)
sales(month) = New Double(days - 1) {}
Next month

В операторе New объявления sales для переменной массива задается 12-элементный массив, каждый элемент которого имеет тип Double(), то есть массив элементов Double. Затем в цикле For определяется, сколько дней в каждом месяце этого года (Year(Now)), и задается соответствующий элемент из sales для массива Double подходящего размера.

Использование массива массивов вместо двухмерного массива в предыдущем примере позволяет сэкономить семь элементов (шесть, если год високосный). В более серьезных случаях экономия памяти может быть более значительной."

Пробовал скопировать в VB6, чтобы разобратся как работает. Но он сразу же красным выделяет 2 строки:
Dim sales()() As Double = New Double(11)() {}
и
sales(month) = New Double(days - 1) {}
Может кто из специалистов подскажет, можно ли в VB6 использовать массив массивов? Эта возможность была бы очень кстати, она очень упростила бы мне программный код.

Re: Массив массивов на VB6

Добавлено: 21 июн 2009, 12:52
mc-black
Да не мучайтесь вы, VB.NET и VB6 - два совершенно разных языка, у них только внешнее сходство небольшое и похожие названия. В VB6(VBA,VBScript) много чего нет, что есть в VB .NET (2003/2005/2008/2010)! А массив массивов в VB6 - это просто многомерный динамический массив, но не везде с этим получится выкрутиться.

Re: Массив массивов на VB6

Добавлено: 27 июн 2009, 19:25
SuperBot
Нашел решение в MSDN Library Visual Studio 6.0. Нечто подобное есть в VB6, с той лишь разницей, что объявить массив массивов VB6 не позволяет. Поэтому (немного измененный в целях тестирования) код примера прилагаю:
Private Sub Command1_Click()
Dim arrX(2) As Variant 'объявляем массив
Dim intX As Integer 'объявляем переменную массива
Dim countersA(1, 5) As String 'объявляем "временный" 2х мерный массив
'задаем цикл и заполняем временный массив
For intX = 0 To 4
countersA(1, intX) = 5 & "/" & intX
Next intX
arrX(1) = countersA() 'присваиваем 1му элементу массива временный массив
'задаем цикл и снова заполняем временный массив уже другими значениями

For intX = 0 To 4
countersA(1, intX) = "hello" & intX
Next intX
arrX(2) = countersA() 'присваиваем 2му элементу массива временный массив с новыми значениями
'проверяем результат выводя его в сообщениях

MsgBox arrX(1)(1, 2)
MsgBox arrX(2)(1, 3)
MsgBox UBound(arrX(1), 2) 'определение максимального размера 2ой размерности первого элемента который равен 1му временному 2х мерному массиву
End Sub