|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TidtcpServer. Работа со списком пользователей
Здравствуйте ув. форумчане. Сделал наскоро интернет чат для информирования пользователей основной ПО, о изменениях в приказах и прочего. С компонентами знакомился на лету.строго не судим.
Чат содержит массовые сообщения,личные,массовые личные,доску объявления и пару фришек для удаленного исправления БД клиента. Имеются некоторые затыки, помощи буду искать у вас. Все функции требуют небольшой корректировки под более верный формат,но затык именно в идентификации пользователей,в частности с дисконектом. 1- Проблема в событии дисконекта. Код:
try with IdTCPServer1.Contexts.LockList do begin for I := 0 to count-1 do begin if TIdContext(Items[i]).Connection.Connected=false then begin loge.Lines.Add('Пользователь отключился -'+user_l.Items[i].Caption); user_l.Items.Delete(i); end; end; end; finally IdTCPServer1.Contexts.UnLockList; end; Может кто знает..можно ли как то подать информацию о ID при методах коннекта или дисконекта. Затык в том что я пока не допедриваю, как мне 100% отследить,что отпал именно Вася,а не Петя. Или есть варинаты индефикации без всяких придуманных мной ID, а сразу по потоку или индексу сокета,но как это организовать операндами пока не пойму. По тем же причинам настораживает 100% доставка личных сообщений, косяков вроде не наблюдал,но тем не менее потоки любят точности..локлист только для массовых отлично подходит.Понимаю что есть вариант создать массив где будет конкретно указан поток и какой из юзеров этому потоку принадлежит.Как это сделать операндами и какие классы регистрировать пока не понимаю. Последний раз редактировалось Heneken, 04.09.2014 в 08:07. |
#2
|
|||
|
|||
В общем сам сообразил.
После тестов на 20-30 пользователей выложу код с пояснениями.Может кому пригодится.
|