Перейти к содержанию
Fire Monkey от А до Я
  • 0

idtcpclient и текст


Вопрос

Отправляю через idtcpclient текст вида "текстовая строка1"+chr(9)+"значение текстовой строки". на выходе получаю "текстовая строка1\t1значение текстовой строки". каким образом получить со стороны сервера аналогичную строку. дело в том что комбинации у меня встречаются такие же в самом тексте  (meteo\temp например) и я не смогу понять что мне нужно \t заменить на chr(9)

\t Перемещает позицию печати к следующей позиции горизонтальной табуляции.

клиент

en:=IndyTextEncoding(IdTextEncodingType.encUTF8);

try
form2.IdTCPClient1.Host:=form2.Edit1.Text;
form2.IdTCPClient1.Port:=strtoint(form2.Edit2.Text);
form2.IdTCPClient1.Connect;

form2.IdTCPClient1.ConnectTimeout:=5000;
form2.IdTCPClient1.Socket.WriteLn(st.Text,en);

form2.IdTCPClient1.Disconnect;

 

сервер

en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
 strText:=AContext.Connection.Socket.ReadLn(b1,en);

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

еще пробывал вот так


type
  // Объявление записи клиента
  TStructureConfig = Record
    TopicName : TStringList;


    MQTT_Server: TStringList;
    MQTT_Port: TStringList;
    MQTT_ClientID: TStringList;
    MQTT_User: TStringList;
    MQTT_Password : TStringList;


    MYSQL_Server  : TStringList;
    MYSQL_Port  : TStringList;
    MYSQL_DataBase  : TStringList;
    MYSQL_TableName  : TStringList;
    MYSQL_TableRowName  : TStringList;
    MYSQL_TableRowCount  : TStringList;
    MYSQL_TableWriteTime  : TStringList;
    MYSQL_HTTP_API  : TStringList;
  end;

 

     Config:TStructureConfig;

 

килент

form2.IdTCPClient1.Host:=form2.Edit1.Text;
form2.IdTCPClient1.Port:=strtoint(form2.Edit2.Text);
form2.IdTCPClient1.Connect;

form2.IdTCPClient1.ConnectTimeout:=5000;
//form2.IdTCPClient1.Socket.WriteLnRFC(,en);

Buf := RawToBytes(form1.Config, sizeOf(form1.Config));
form2.IdTCPClient1.IOHandler.Write(Buf);

 

сервер

form1.Config.TopicName.Clear;
form1.Config.MYSQL_Server.Clear;
form1.Config.MYSQL_Port.Clear;
form1.Config.MYSQL_DataBase.Clear;
form1.Config.MYSQL_TableName.Clear;
form1.Config.MYSQL_TableRowName.Clear;
form1.Config.MYSQL_TableRowCount.Clear;
form1.Config.MYSQL_TableWriteTime.Clear;
form1.Config.MYSQL_HTTP_API.Clear;


en:=IndyTextEncoding(IdTextEncodingType.encUTF8);
// strText:=AContext.Connection.Socket.ReadLnRFC(b1,en);
 AContext.Connection.IOHandler.ReadBytes(buf,sizeof(buf),false);
  BytesToRaw(buf, form1.Config, sizeof(form1.Config));

 

Изменено пользователем Александр Лукьянов (Filament Extruder 1.75)
Ссылка на комментарий
  • 0

Если вы хотите передавать данные не тронутыми, то используйте бинарную передачу. 

А вообще \t это общепринятый символ экранирования табуляции (символа с кодом 9) - вы его как раз и передаете. Можете на выходе делать замену \n на chr(9)

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...