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;