delphi Код:
procedure TConnection.WriteBuf(var buf; const size: Integer);
var
i: Integer;
begin
if size<=0 then Exit;
i:=Length(fBuf);
SetLength(fBuf,i+size);
Move(buf,fBuf[i+1],size);
ParseBuf;
end;
procedure TConnection.ParseBuf;
var
pck: PFixPck;
begin
pck:=@fBuf[1];
while(Length(fBuf)>=2)and(Length(fBuf)>=pck.size)do begin
try
if pck.size<2 then pck.size:=2;
if isLogin then fBF.bfDecode(pck.id,pck.size-2)
else fCrypt.DecryptGP(pck.id,pck.size-2)
;
ParsePck(pck); // обработка пакета
finally
Delete(fBuf,1,pck.size);
pck:=@fBuf[1]; // может и не надо но не помешает...
end;
end;
end;