Показать сообщение отдельно
  #1  
Старый 12.07.2011, 16:18
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию проверка на время

Код:
 if LClients.Count>0 then
  for i:=LClients.Count-1 Downto 0  do
   if CompareDateTime(IncMinute(PClientInfo(LClients.Items[i])^.time, 2),now) = -1 then
вот такая проверка "проходит" через пару минут после подключения клиента, то есть результат положительный хотя не должен быть

при подключении вот что делается

Код:
var
p: PClientInfo;
begin
New(p);
p.adress:=Socket.RemoteAddress;
p.time:=now;
p.Client:=Socket;
LClients.Add(p);

и ежеминутно клиент присылает пакет сообщая что он жив, в LClients у этого пользователя обновляется время на текущее
Код:
if pacet.ID = 0 then
 begin
  for i:=0 to LClients.Count-1  do
   if Socket = PClientInfo(LClients.Items[i])^.Client then
    begin
    new(p);
    p.adress:=Socket.RemoteAddress;
    p.time:=now;
    p.Client:=Socket;
    LClients.Items[i]:=p;
    end;
  exit;
 end;

проверял время своевременно обновляется

никак не врубаюсь из за чего проверка то срабатывает, там прибавляется 2 минуты и первая переменная никак не может быть меньше текущего времени
Ответить с цитированием