Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 11:12   #1
nix01d
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 14
По умолчанию Список ников в чате

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

Кто не понял о чем речь, я прикрепил исходник.
Вложения
Тип файла: rar listbox.rar (8.5 Кб, 17 просмотров)
nix01d вне форума Ответить с цитированием
Старый 02.10.2009, 22:41   #2
nix01d
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 14
По умолчанию

Пожалуй выложу код всех процедур и скрин
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Active:=True;
ListBox1.Items.Add(Edit2.Text);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var s: string;
    i: Integer;
begin
s:=Socket.ReceiveText;
if Copy(s,1,2) = '#N' then begin
    Delete(s,1,2);
ListBox1.Items.Add(s);
s:='#U';
for i:=0 to ListBox1.Items.Count-1 do
s:=s+ListBox1.Items[i]+';';
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
ServerSocket1.Socket.Connections[i].SendText(s);
end;
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var i: Integer;
begin
ListBox1.Items.Clear;
ListBox1.Items.Add(Edit2.Text);
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
     ServerSocket1.Socket.Connections[i].SendText('#N');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var s:string;
begin
s:=Socket.ReceiveText;
if Copy(s,1,2) = '#N' then Socket.SendText('#N'+Edit2.Text);
if Copy(s,1,2) = '#U' then begin
     Delete(s,1,2);
     ListBox1.Items.Clear;
     while Pos(';',s) > 0 do begin
      ListBox1.Items.Add(Copy(s,1,Pos(';',s)-1));
      Delete(s,1,Pos(';',s));
      end;
      end;
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
  var i:integer;
begin
ListBox1.Items.Clear;
ListBox1.Items.Add(Edit2.Text);
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
     ServerSocket1.Socket.Connections[i].SendText('#N');
end;
Вот собсно что получается после подключения пятого или шестого юзера, в данном случае пятого
nix01d вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с личкой в чате Shouldercannon Общие вопросы Delphi 9 19.03.2009 14:42
Смайлы в чате full Shouldercannon Общие вопросы Delphi 28 30.12.2008 15:48
1 человек пишет с 2 ников Tixis Свободное общение 3 10.04.2008 12:09
Skroll box в чате. Dj_smart Общие вопросы Delphi 9 08.03.2008 09:34
Смайлы в чате. Teen4jump Общие вопросы Delphi 5 05.03.2008 21:20