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

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

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

Сообщение Wild VB Code for Food » 22.01.2006 (Вс) 7:55

Вот такой вопрос....возможно ламерский....возможно нет :twisted:

В общем есть динамический массив, юзер тайпный. этот массив содержит инфу пользователях

Код: Выделить всё
Private Type client
    idM As Long
    idT As Long
    file As Long
    filename As String
    sessionId As Long
    remoteip As String
    mode As state
    length As Long
    received As Long
    packets As Long
End Type

Private Enum state
     none = 0
     connected = 1
     sesid = -1
     hello = 2
     start = 3
     datastart = 4
     dataend = 5
     endheader = 6
End Enum

   
Dim Clients() As client


скажем какой-то юзер завершил свои тёмные дела, и ушёл.. сокеты отсоеденились. мне надо стереть элемент в массиве, которому соответствует этот пользователь, так чтобы idы сдивинулись вниз

те:
был clients(3), он ушёл, надо стереть(выгрузить из памяти) и сдвинуть вниз, те живого clients(4) сдвинуть на clients(3).....давно мучаюсь с этим. Просто сильно приспичело..
Лучше думать чем жевать.

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

Сообщение GSerg » 22.01.2006 (Вс) 8:06

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

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 22.01.2006 (Вс) 8:50

А когда на другой язык портировать буду, мне пальцы грызть?
Последний раз редактировалось Wild VB Code for Food 23.01.2006 (Пн) 10:27, всего редактировалось 1 раз.
Лучше думать чем жевать.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 22.01.2006 (Вс) 10:06

исаползуй колекцию или так:
i-номер юзера, котрого надо удалить

Код: Выделить всё
for j=i to Ubound(Clients)-1
      Clients(i)=Clients(i+1)
next
ReDim Preserve Clients(Ubound(Clients)-1)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.01.2006 (Вс) 14:53

Если заменишь filename и remoteip на String*n, можно будет использовать CopyMemory для переноса элементов. Но лучше используй коллекцию.
Lasciate ogni speranza, voi ch'entrate.

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 22.01.2006 (Вс) 16:05

Sirik
спасибо, тольк должно быть так.
Код: Выделить всё
for j=i to Ubound(Clients)-1
      Clients([b]j[/b])=Clients([b]j[/b]+1)
next
ReDim Preserve Clients(Ubound(Clients)-1)
Лучше думать чем жевать.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 1:13

Видимо под словом "коллекция" он понимает MSDN.

Доказательства:
GSerg писал(а):Коллекцию возьми и перестань мучаться...

На что была такая реакция:
MSDN? есть у меня, там этого нету


Либо он противник ООП. :D
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 23.01.2006 (Пн) 9:19

если колекцию использовать как массив, то это жалкое подобие ООП

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 23.01.2006 (Пн) 10:12

Хакер :lol:
Немного ступил, просто любят на форуме посылать RTFM читать, или в поиск.

Да признаюсь, мне легче массивы использовать чем коллекцию (Collection), хотя я о ней знаю. :?

Просто я пишу сервер, на ВБ, и не использую для хранения всякие Вбшные примочки потомучто, когда буду переписывать ( на CPP или PB), прийдётся долго головой о стол бится.

Ну, да я сторонник двумерностей. :lol: :lol: :lol: :D
Лучше думать чем жевать.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 23.01.2006 (Пн) 10:21

я сам колекции использую только для работы с классами
не знаю првильно ли, но мне так удобнее

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 23.01.2006 (Пн) 10:35

Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 11:51

Тогда ясно. А мне по душе коллекция. Вот я например писал сетевую проги и был класс клиента, и в классе были объявлены все функции для работы с клиентом и процие полезности.

А в теле User-Defined Type кроме переменных ничего не определить...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.01.2006 (Пн) 12:05

Хакер писал(а):А в теле User-Defined Type кроме переменных ничего не определить...

Вообще-то там можно определить Variant. И все, что из этого следует.
Lasciate ogni speranza, voi ch'entrate.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 23.01.2006 (Пн) 12:47

2 alibek:
насколько я знаю тип Variant в .NET не поддерживаеться, поэтому если писать, то желательно, не используя этот тип
вдруг прийдётся переписывать под net

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.01.2006 (Пн) 14:03

alibek писал(а):
Хакер писал(а):А в теле User-Defined Type кроме переменных ничего не определить...

Вообще-то там можно определить Variant. И все, что из этого следует.


Я в смысле

Код: Выделить всё

Type SP_CLIENT
  ClientName as String
  ClientPID as String
  Client_rIP as string
  Client_rHostName as String
  Client_SocketHandle as Long
  Client_QueryCounter as Long
  Client_ErrorCounter as Long

  Sub Disconnect
    GetSocket(.......
    .......
    ......
  End Sub
End Type


Так вот такого не получится, потому что это не класс а структура. И я говорю о преимуществе класса перед структурой. А ты мне говоришь про Variant :? :?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 23.01.2006 (Пн) 14:28

Поправка, чтобы быть точным в определениях. Не структура, а тип.

Wild VB Code for Food
Постоялец
Постоялец
 
Сообщения: 387
Зарегистрирован: 16.06.2005 (Чт) 17:34
Откуда: ты, друг? =)) Сообщений: 1234

Сообщение Wild VB Code for Food » 24.01.2006 (Вт) 0:36

Хакер
Эко захотел!
Как ты думаешь, зачем придумали классы, а?

А ты хочешь всё в Ю-Д типы запихать.
Лучше думать чем жевать.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.01.2006 (Вт) 0:38

Так вот я ему про Фому, а он мне про ... Variant :D

Классы рулят! :D Хотя структуры, т.е. типы очень помогают, когда надо чего-нибудь в файл записать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 194

    TopList