Тема: TIdTCPClient кодіровка Delphi XE 7

Я задопомогою TIdTCPClient відправляю повідомлення 'Привіт!!!' на сервер. Сервер отримав повідомлення '??????!!!'. Як зробить щоб текст був правильної кодіровки.

  
  Form1.idtcpclnt1.Host :=127.0.0.1;
  Form1.idtcpclnt1.Port:=12340;
  Form1.idtcpclnt1.Connect;
  Form1.idtcpclnt1.Socket.WriteLn('Привіт!!!');
  Form1.idtcpclnt1.Disconnect;

2 Востаннє редагувалося Chemist-i (16.10.2014 18:01:39)

Re: TIdTCPClient кодіровка Delphi XE 7

AnsiToUtf8()

...
Form1.idtcpclnt1.Socket.WriteLn(AnsiToUtf8('Привіт!!!'));
...

або навпаки (ящо дельфі>2010, а сервер налаштований на прийом ansi)
Utf8ToAnsi()...

x

3

Re: TIdTCPClient кодіровка Delphi XE 7

Непрацює

Form1.idtcpclnt1.Socket.WriteLn(AnsiToUtf8('Привіт!!!'));

4

Re: TIdTCPClient кодіровка Delphi XE 7

ReadLn(TEncoding.ANSI);
WriteLn(S, TEncoding.ANSI);

Путлер капут!

5

Re: TIdTCPClient кодіровка Delphi XE 7

Form1.idtcpclnt1.Socket.WriteLn(S, TEncoding.ANSI);

видає ошибку
E2250 There is no overloaded version of 'WriteLn' that can be called with these arguments

6

Re: TIdTCPClient кодіровка Delphi XE 7

значить  дивітся   в  документаціі  там  має  бути  обо  опис  агрументів   або  схожа функція  з  іншими  аргументами.
   або  передавайте  строку   як байти  і   конвертуйте  в  string  і  навпаки  окремо

Путлер капут!

7 Востаннє редагувалося Stanislav Stecenko (17.10.2014 18:24:35)

Re: TIdTCPClient кодіровка Delphi XE 7

Рішення проблеми!!!
Сервер

var
  s:string;
.............
s:= AContext.Connection.Socket.ReadLn(IndyTextEncoding_UTF8);

Клієнт

var
  s:string;
.............
Form1.idtcpclnt1.Socket.WriteLn(s,IndyTextEncoding_UTF8);
Подякували: 0xDADA11C7, Torbins2