Динамическая работа с массивом

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.01.2006 (Вт) 12:25

Лучше бы конечно узреть код неработающей проги, но внезапно прорезавшиеся телепатические способности говорят, что неплохо бы переопределять размерность массива перед записью в него чего либо...
Весь мир матрица, а мы в нем потоки байтов!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 24.01.2006 (Вт) 12:39

RTFM!!!!!!!!!

команда ReDim на это существует, например так

ReDim Preserve ar(newSize1 - 1, newSize2 - 1) As Integer

Preserve для того чтобы имеющиеся в массиве записи выжили
Весь мир матрица, а мы в нем потоки байтов!

Uragan
Новичок
Новичок
Аватара пользователя
 
Сообщения: 29
Зарегистрирован: 13.06.2005 (Пн) 15:50

Сообщение Uragan » 25.01.2006 (Ср) 16:01

Вообще лучше не по 1 увеличивать емкость массива а сразу по 10% например. Потому что каждый раз при выполнении операции redim preserve создается новый массив и в него копируются все данные. Это отнимает много машинного времени. Я бы для этого сделал специальный класс - динамический массив, который автоматически время от времени увеличивает емкость.
Или еще можно для этой цели использовать коллекции. Они не копируют все содержимое заново каждый раз, а просто добавляют элементы. Но требуют больше памяти и немного медленнее работают

Alex123
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 16.11.2005 (Ср) 7:14

Сообщение Alex123 » 26.01.2006 (Чт) 6:17

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

Uragan
Новичок
Новичок
Аватара пользователя
 
Сообщения: 29
Зарегистрирован: 13.06.2005 (Пн) 15:50

Сообщение Uragan » 26.01.2006 (Чт) 11:15

MaximZaikin писал(а):Да я думал об этой идеи, впринципе мысль нормальная, но я хочу добится полной динамичности

Тогда выход только один - создать свой класс - динамический массив. Коллекция из строк. А в каждой строке - динамический одномерный массив.
и обращаться с ним можно будет пости как с обычным массивом
DynMassiv.Value(5,10)=...
DynMassiv.Value(1,100)=...
DynMassiv.Value(8,20)=...
Класс DynMassiv будет обращаться в зависимости от первого параметра к нужному динамическому массиву из списка 5-му, 1-му, 8-му и т.д.
А как это реализовать уже дело фантации, можно придумать кучу вариантов.
Можно например в collection хранить объекты в каждом из которых объявлен динамический массив переменной длины


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList