Страница: 1 |
Страница: 1 |
Вопрос: Динамический массив! HelP!
Добавлено: 25.08.09 13:00
Автор вопроса: fifa36
Всем привет!
Объявляю динамический массив
Dim arrayname() as string
sub main()
varname = Ubound(arrayname) 'для отладки
ReDim arrayname(Ubound(arrayname)+1)
end sub
Выдает ошибку что subscript out of range. Помогите плиз.
Может надо изменить опцию размерности массива по умолчанию, при первом объявлении, если да то как?)
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #1
Добавлено: 25.08.09 13:10
тебе что вообще надо-то? потому что написал ты полную тупость
Номер ответа: 2
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #2
Добавлено: 25.08.09 13:12
надо чтоб тупицы вроде тебя не выделывались
Номер ответа: 3
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #3
Добавлено: 25.08.09 13:31
fifa36 а все-таки, чего надо-то?
Номер ответа: 4
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #4
Добавлено: 25.08.09 13:34
я заранее не знаю какой размерности нужен массив
есть цикл которой заполняет массив, нужно чтоб каждый раз при выполнении цикла в массив записывался новый элемент с сохранением прежних. Спасибо за помощь! извините что не корректно сформулировал вначале.
Номер ответа: 5
Автор ответа:
Loner-new_
Вопросов: 0
Ответов: 4
Профиль | | #5
Добавлено: 25.08.09 15:10
Ошибка возникает при запросе размерности несуществующего массива.
Решение как обойти (тупое, "в лоб", но думать сильно не хочется):
Номер ответа: 6
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #6
Добавлено: 25.08.09 18:15
А если массив задать в самом событии Main? Когда ты узнаёшего размер, типа dim arrayname(0 to 'число) As string?
Номер ответа: 7
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #7
Добавлено: 25.08.09 18:19
есть цикл которой заполняет массив, нужно чтоб каждый раз при выполнении цикла в массив записывался новый элемент с сохранением прежних.
Дык в чем проблема то?
Option Base 1
Sub MyArr()
Dim i As Integer
Dim UpBound As Integer
Dim LoBound As Integer
Dim MyArray() As Integer
UpBound = 150
LoBound = -150
For i = 1 To 100
ReDim Preserve MyArray(i)
MyArray(i) = CInt((UpBound - LoBound + 1) * Rnd + LoBound)
Next i
For i = 1 To UBound(MyArray)
Debug.Print MyArray(i)
Next i
End Sub
Волшебное слово
А Ubound массива (для отладки) определишь потом(когда он будет заполнен).
Номер ответа: 8
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #8
Добавлено: 25.08.09 18:53
Номер ответа: 9
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #9
Добавлено: 27.08.09 10:33
Всем спасибо! разобрался
Номер ответа: 10
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #10
Добавлено: 28.08.09 13:20
И блин никто не сказал что есть объекты Collection и Scripting.Dictionary, которые бывает оказываются намного удобнее массивов.
Номер ответа: 11
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #11
Добавлено: 28.08.09 13:21
ReDim Preserve - осторожнее с этим.
Номер ответа: 12
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #12
Добавлено: 28.08.09 16:23
____ Коллекции дольше работают.
____ GDK, а что там с Preserve[тивом]? Есть камешки подводные?
Номер ответа: 13
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #13
Добавлено: 31.08.09 16:21
Есть. Посмотри спавку по этой директиве.
Я точно не смогу описать косяки, но примерно скажу, что не следует пользоваться ей при работе с многомерными массивами. Данные будут потеряны. Типа сохранятся данные только в первом измерении.
Коллекции работают дольше, занимают больше памяти, но работать с ними удобнее, с Scripting.Dictionary ещё удобнее.
Номер ответа: 14
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #14
Добавлено: 31.08.09 17:56
Как всегда за удобство приходится платить.
О проблемах с одномерным массивом никто ничего не слышал?