Страница: 1 |
Народ, тут такой вопрос. Вот кусок кода: Dim MyArray() As Long Без Preserve работает, но мне бы оставить содержимое массива. Можно, конечно, создать временный массив, но два раза гонять данные... (MyArray -> TempArray, TempArray -> MyArray). Есть ли еще какой то выход?
Вот что пишет Microsoft в MSDN: When you use Preserve, you can resize only the last dimension of the array, and for every other dimension you must specify the same size it already has in the existing array. Ну тогда спасибо. Придется использовать TempArray . Используй массив типа Variant. Тогда в каждый элемент массива можно будет запихать еще массив. Обращение немного корявое будет, что-то вроде Arr(i)(j). Где-то здесь на форуме я подобный пример уже писал. Страница: 1 |
Вопрос: ReDim
Добавлено: 25.09.03 13:09
Автор вопроса: lnu
i = 1
j = 1
ReDim Preserve MyArray(i, j)
j = j + 1
ReDim Preserve MyArray(i, j)
j = j + 1
ReDim Preserve MyArray(i, j)
i = i + 1
ReDim Preserve MyArray(i, j) ' и тут у меня проблемка: Subscript out of range.
Как мне всё же увеличить і ?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #1
Добавлено: 25.09.03 13:25
Номер ответа: 2
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #2
Добавлено: 25.09.03 13:30
В принципе невозможно. Если не полениться и почитать MSDN, то можно
узнать, что изменять можно только последнюю размерность массива.
Единственный выход: создать новый массив с нужными размерами и в цикле
перегнать туда данные. Я так делал.
Номер ответа: 3
Автор ответа:
lnu
Вопросов: 8
Ответов: 14
Профиль | | #3
Добавлено: 25.09.03 13:36
Номер ответа: 4
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #4
Добавлено: 26.09.03 00:40