Вопросы

Отправляю через 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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 ответа на этот вопрос

  • 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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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