Динамические массивы.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Динамические массивы.

Сообщение Cramac » 25.02.2007 (Вс) 22:42

Всем привет. Сильно не пинайте, но я в ВБ не силен. Поиск никчему не привел хорошему, еще больше только запутал.
Суть проблемы такая:
как создать динамический массив? т.е. максимальное значение в нем не известно. Может быть как 1 так и 1000001.
Как это осуществить? Помогите примером :)

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 25.02.2007 (Вс) 22:43

ReDim
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 22:46

BV
а не покажите пример использования?

у меня массив должен создаватся на основе результатов выполнения функции, т.е. функция при удачном выполнении выдает число 1 ... до много и собственно в функции надо создать этот массив.

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:00

немного не так:

Private Sub name ()
тело процедур, при выполнении выдает к примеру 432
и тут надо сделать массив
MyArray(0)=432
End Sub

этот саб может выолнится много раз и все его результаты надо в массив записать

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:09

а как записать следующее значение сохранив предыдущее?
т.е. что бы новый результат был
MyArray(1)=422

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:12

выдает такое сообщение
Array already dimensioned
на строку
Redim preserve MyArray(1)

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:19

Код: Выделить всё
Dim tmp_n_w As Integer
Dim myarray(1) As Integer

Private Sub chek_file(count_f)
....
If file <> 0 Then

tmp_n_w = UBound(myarray) +1
' вроде как хочу увеличить массив на 1

ReDim Preserve myarray(tmp_n_w)
myarray(tmp_n_w) = count_f

End If

End Sub

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:22

так выдается такое сообщение:
subscript out of range
на строку
tmp_n_w = UBound(myarray) +1

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2007 (Вс) 23:26

Cramac
Очень полезно найти MSDN за октябрь 2001 и установить. Тогда такие вопросы будут решаться по F1.

Кроме того, ИМХО, код следует писать не для частного случая, как тут, а универсально. Для массива, начинающегося с любой границы.

Код: Выделить всё
dim arr() as long

redim arr(1 to 1)

arr(ubound(arr))=422
redim preserve arr(lbound(arr) to ubound(arr)+1)
arr(ubound(arr))=423
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2007 (Вс) 23:32

RamMerlabs, а ты таки недалёк весьма. Если ты не понял, под словом "тут" разумеется именно твоя писанина, за которой я с интересом наблюдаю минут 40. То, как ты набиваешь посты, по чайной ложке выдавая ответ, который был понятен сразу.

Замечание же о количестве модераторов, если честно, вообще не ясно из чего произрастает.

Выходные просто. Вот вернутся кто надо, и снесём нафиг и тебя, и все твои посты до единого. Ибо нефиг.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Cramac
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 25.02.2007 (Вс) 22:37

Сообщение Cramac » 25.02.2007 (Вс) 23:39

GSerg
Спасибо, все работает

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2007 (Вс) 23:46

Я не Гончарук Сергей. И если ты не понял, почему был удалён (вернее, перемещён для дальнейших занимательных разбирательств) твой пост, значит твой интеллект даже ниже, чем ты на данный момент успел показать, как ни кажется это невозможным.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: YaCy [Bot], Yandex-бот и гости: 22

    TopList