Показать сообщение отдельно
Старый 16.08.2008, 16:08   #7
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Amorality, на хрень не ответит)
принимать пакет думаю стоит так:
delphi Код:
var   size: word;   pck: string; begin   TCPClient.ReadBuffer(size, 2);   SetLength(pck, size-2);   TCPClient.ReadBuffer(pck[1], size-2);   // усё, пакет (не считая размера) в переменной pck end;
для удобочитаемости пакета вот функция перевода его HEX:
delphi Код:
function StringToHex(str1,Separator:String):String; var   buf:String;   i:Integer; begin   buf:='';   for i:=1 to Length(str1) do begin     buf:=buf+IntToHex(Byte(str1[i]),2)+Separator;   end;   Result:=buf; end;
и обратно:
delphi Код:
function HexToString(Hex:String):String;   function SymbolEntersCount(s: string): string;   var     i: integer;   begin     Result := '';     for i := 1 to Length(s) do       if not(s[i] in [' ',#10,#13]) then         Result:=Result+s[i];   end; var   buf:String;   bt:Byte;   i:Integer; begin   buf:='';   Hex:=SymbolEntersCount(UpperCase(Hex));   for i:=0 to (Length(Hex) div 2)-1 do begin     bt:=0;     if (Byte(hex[i*2+1])>$2F)and(Byte(hex[i*2+1])<$3A)then bt:=Byte(hex[i*2+1])-$30     else if (Byte(hex[i*2+1])>$40)and(Byte(hex[i*2+1])<$47)then bt:=Byte(hex[i*2+1])-$37;     if (Byte(hex[i*2+2])>$2F)and(Byte(hex[i*2+2])<$3A)then bt:=bt*16+Byte(hex[i*2+2])-$30     else if (Byte(hex[i*2+2])>$40)and(Byte(hex[i*2+2])<$47)then bt:=bt*16+Byte(hex[i*2+2])-$37;     buf:=buf+char(bt);   end;   HexToString:=buf; end;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился 5 спасибками от: