Я много работаю с динамическими массивами на VB 5 и тут я сталкиваюсь с такой проблемой.
Процедура должна добавлять в массив A один элемент. Очевидное решение:
- Код: Выделить всё
I = Ubound( A )
redim preserve A(i+1)
не будет работать, так как Ubound вызовет ошибку, если еще ни разу не был использован redim. Если же redim написать в Form_load, то в массиве уже будут какие-то элементы (так как невозможно указать внутри redim длину массива =0), а их быть не должно. К сожалению, динамические массивы нулевой длины почему-то в VB 5 (и 6, наверное, тоже) не поддерживаются.
Я делаю следующим образом. Оцените и скажите, правильно ли я делаю или есть способ покрасивее, получше и правильнее? Может, я что-то упустил?
МОЕ КОРЯВОЕ РЕШЕНИЕ ПОДОБНЫХ ПРОБЛЕМ:
- Код: Выделить всё
Option base 1
Private Sub Form_Load()
redim A(0 to 0)
End Sub
sub XXX
I = Ubound( A ) + 1
if I = 1 then redim A(i) else redim preserve A(i)
end sub