примерно так
delphi Код:
var
Timer : TTimer;
Counter : integer;
f : boolean;
procedure Init;
begin
Timer :=TTimer.Create(nil);
Timer.enabled :=false; //таймер выключен
Timer.OnTimer :=@SendPck; //адрес процедуры,
//которая будет выполнятся
Timer.interval :=500; //Задержка в мс
f := false;
end;
procedure Free;
begin
Timer.free;
end;
procedure SendPck(Sender: TObject);
begin
if (Counter mod 2) = 0 then begin
buf:=hstr('7C B1 19 00 00');
SendToClient;
end else begin
buf:=hstr('65 DE 7D 22 10 00 00 00 00');
SendToServer;
end;
Dec(Counter); //Уменьшаем счетчик
if Counter=0 then //Проверяем
Timer.enabled :=false; //и если надо выключаем
end;
var
S : string;
D1 : integer;
D2 : integer;
begin
if FromClient and (pck[1]=#$49) then begin //49=Say2
S :=ReadS(2); //считываем текст сообщения
if S='START' then begin //по START в чат включаем посылку
Counter := 20;
Timer.enabled :=true; //запускаем
f := true;
pck :=''; //не отправляем это на сервер
end
end;
if FromServer and (pck[1]=#$62) then begin
D1 := ReadD(2);
D2 := ReadD(6);
if (D1=1517) and (D2=0) and f then begin
Counter := 20;
Timer.enabled :=true; //опять запускаем
end;
end;
end.