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;