Прием строки

Maksim2309

Здравствуйте Уважаемые форумчане! Ломаю голову уже 3-ий день не могу понять, почему при передачи строки с ******* на Android (Delphi XE5) например zalvkl, принимает так: z alvkl Вот прием данных:
function HexToString(H: String): String;
var I: Integer;
begin
  Result:= '';
  for I := 1 to length (H) div 2 do
    Result:= Result+Char(StrToInt('$'+Copy(H,(I-1)*2+1,2)));
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
  len, i: integer;
  s, res, lasts: string;
  buffer: TJavaArray<byte>;
begin
  len:= istream.available;
  if len = 0 then exit;
 
  buffer:= TJavaArray<byte>.create(len);
  istream.read(buffer);
 
  s:='';
  for i:= 0 to len-1 do begin
   s:= s + inttohex(buffer[i], 2);
  end;
 
  res:=HexToString(s);
 
  if Pos('zalvkl', res)<>0 then begin
    Form2.Image5.Visible:=true;
    Form2.Image2.Visible:=false;
  ...
  Form2.Memo1.Lines.Add(res);
end;
Заранее спасибо
3 ответа

Maksim2309

это не в коде дело, также могут быть и склейки (при посылке двух сообщений, часть одного сообщения приходит вместе с другим), все это решается на уровне протокола сообщений (наличие префикса и/или постфикса и т.д.)


Maksim2309

Ломаю голову уже 3-ий день не могу понять, почему при передачи строки с ******* на Android (Delphi XE5) например zalvkl, принимает так: z alvkl
Зря потерял 3 дня. В следующий раз будет принимать так zalv kl и будешь опять ломать голову?


Maksim2309

также могут быть и склейки
Так юмор в том, что я и несколько команд передавал. Склейки не происходит, но передача все равно как выше.
Зря потерял 3 дня. В следующий раз будет принимать так zalv kl и будешь опять ломать голову?
Все команды принимаются как должны за исключением 1-ого символа. Поэтому и подумал что в коде что-то.