Динамический массив

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
visualman
Бывалый
Бывалый
 
Сообщения: 228
Зарегистрирован: 08.02.2002 (Пт) 19:06
Откуда: Russia

Динамический массив

Сообщение visualman » 24.03.2003 (Пн) 16:58

Есть структура инфы о клиенте

Type UserInfo
IP As String 'IP адрес клиента
Nik As String 'Ник клиента
OS As String 'Система
Status As Integer 'Текущий режим
SDescr As String 'Описание режима
SocketNum As Integer 'Номер соккета, подключения клиента
End Type

и переменная - массив Public OnLineUsers() As UserInfo

Как при подключении нового клиента добавить в OnLineUsers новый индекс. С контролами всё понятно: Load CmdOK(UBound)+1

А как быть с массивом?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2003 (Пн) 17:07

Используй Collection. Это и есть самый что ни на есть динамический массив. Описание - в хелпе басика.

visualman
Бывалый
Бывалый
 
Сообщения: 228
Зарегистрирован: 08.02.2002 (Пт) 19:06
Откуда: Russia

Сообщение visualman » 24.03.2003 (Пн) 17:14

Усё сам нашёл выход:

ReDim OnLineUsers(0) As UserInfo


Добавляем новый индекс !!!!!

ReDim Preserve OnLineUsers(UBound(OnLineUsers) + 1)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2003 (Пн) 17:42

Коллекция и проще и работает быстрее. ReDim это варварский способ ;) по отношению к ресурсам и всему остальному.

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 24.03.2003 (Пн) 17:59

RayShade писал(а):Коллекция и проще и работает быстрее. ReDim это варварский способ ;) по отношению к ресурсам и всему остальному.


Можно (только очень осторожно) воспользоватся ReDim, но тогда

Redim Preserve OnLineUsers(UBound(OnLineUsers) + 1)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 24.03.2003 (Пн) 18:19

А вот повторяться не нужно. Человек сам про это написал.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 24.03.2003 (Пн) 18:35

gaidar писал(а):А вот повторяться не нужно. Человек сам про это написал.


Да, надо мне глазные капли в аптеке купить :oops:

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 24.03.2003 (Пн) 19:31

вот только еще надо будет написать класс UserInfo для более "цивилизованного" кода (раз ReDim обвинили в варварстве :) )
Изображение

muadib
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 13.11.2002 (Ср) 14:03
Откуда: Russia

Сообщение muadib » 24.03.2003 (Пн) 19:51

Делал прогу с динамическим массивом - хранила пути выделенных обьектов (String). Все супер только барьер 100_записей не могла пройти писала: "отказаннов в доступе!". Если пройдешь барьер дай пример кода!
Помоги чайнику и воздатся тебе благодатью -& в чертогах сетей, где пакеты живут вечно...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2003 (Пн) 19:57

Используй колекцию, еще раз повторяю - в ней 32767 элементов можно хранить беспроблемно.

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 24.03.2003 (Пн) 20:17

ну разве что только памяти хватит, а ее в большинстве случаев хватает... :D
Изображение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.03.2003 (Пн) 20:38

Там еще с инлдексами заморочки есть. Вообщето можно хранит и больше, но на некоторых реализациях VBRuntime это не прокатывает. Я помню когда то читал в MSDN про это BUG report но только вот запамятовал, какой ;)


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 85

    TopList