![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#3
|
|||
|
|||
|
Спасибо, только сейчас заметил такое свойство. В понедельник проверю, но, думаю, должно сработать.
Нет, свойство connected не помогло. Есть подозрение, что событие OnClientDisconnect срабатывает позже вызова функции рассылки сообщений, несмотря на то, что клиента уже нет. Ошибку стабильно выдает вот на этой функции: Код:
function TGProcessing.GetCount: TGLNumber; var i:integer; begin result := 0; for i := 1 to MaxClients do begin if not self.Client[i].Free then inc(result); //ошибка end; end; Вообще впервые встречаюсь с тем, что ошибка происходит с переменной, которая имеет мало отношения к самой ошибке. Как вариант, возможно, дело в Socket.Data, куда я записываю указатель на Client? Да, и еще. Если убрать проверку кол-ва клиентов через функцию, указанную выше, то ошибку начинает выдавать вот здесь: Код:
procedure TGProcessing.SrvClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); var Pl:^TGClientG; LN:integer; begin LN := 0; Pl := socket.Data; if assigned(Pl) then begin LN := Pl.LocalNumber; //ошибка self.DeleteClient(Pl.LocalNumber); end; end; Последний раз редактировалось Nanotentacle, 11.03.2013 в 08:38. Причина: Это не чат! |