| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > не редекларирует массив |
| Автор: Twwi 15.9.2006, 15:18 | ||
Друзья, у меня проблема с редекларацией массива
Ошибка: Subscript out of range (Error 9). СТрока 18 на момент ошибки у=1, предыдущее значение 0. Т.е. в массив final(0,5) строка занесена успешно (и редекларировлся он успешно), но увеличить размер массива до final(1,5) не может |
| Автор: Aloha 15.9.2006, 16:47 | ||||
| Twwi Проблема в следующем: при использовании ключевого слова Preserve можно изменять только верхнюю границу последней размерности многомерных массивов. Подробнее можно посмотреть, например, http://msdn2.microsoft.com/en-us/library/w8k3cys2.aspx:
На мой взгляд, надо поменять размерности массива final(). Например, такая конструкция работает:
|
| Автор: ИгнатьевАлексей 15.9.2006, 17:22 | ||
| Да! Действительно та ки есть.... Но вот здесь http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/vblr7/html/vastmredim.asp я нашел фразу
Звучит логично. В данном случае, имхо, надо пользоваться способом работы с дин. массивами, который описан ввезде традиционно первым, т.е. сначала впервой группе циклов с неизв. количеством повторений определить полностью размерность массива, зетем ReDim, а потом - его заполнение при помощи For...Next. Я вообще то так и делал всегда, т.к. когда то прочитал , что второй способ (твой) проигрывает в быстродействии из-за многократного перераспределения памяти. Вот ты увидел и второй минус.... |
| Автор: Twwi 16.9.2006, 08:16 |
| Спасибо, Aloha , я чесно говоря эту фразу читала как нельзя уменьшать размерность массива вообще, а не последней.. Интересно можно транспонировать массив?) Наверное опять через for... Будем изыскивать.. ИгнатьевАлексей , я об этом тоже подумывала, но мне это показалось дольше, т.к. для того чтобы просчитать размер массива, а потом заполнить его потребуется два раза прогнать код указанный ранее. Может я не права? Спасибо за совет, попробую и так и эдак |