Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   UDP mit UTF8 (https://www.delphipraxis.net/172552-udp-mit-utf8.html)

Faxe 10. Jan 2013 15:02

Delphi-Version: XE2

UDP mit UTF8
 
Hallo Zusammen und verspätet frohes Neues.

Ich verzweifle hier gerade am Indy-UDP in XE3.

Ich sende einen String von einem UDP-Client zu einem UDP-Server, alles wie seit Delphi 5 ohne Sorgen. Nun ist auf einmal ein russischer Name dabei. Ich komme nicht drauf wie ich den String als UTF8 rüber kriege.

Unter XE3 beim senden vom UDP-Client versuchte ich zuletzt:
IdUDPClient1.Send('xxxxx',TIdTextEncoding.UTF8);

Aber wie kriege ich das in einer Listbox auf dem UDP-Server, auch XE3, lesbar?
Ich versuchte zuletzt UTF8ToString(AData) im UDP-Server, die russischen Zeichen sind gut zu lesen in meiner ListBox. Aber das erste Zeichen fehlt mir immer, egal was ich sende. :-(

Wenn da jemand mal einen Tipp hätte was ich mit dem "array of byte" (IdUDPServer1UDPRead) anfangen muss um es lesbar und vollständig zu kriegen, das wäre toll. Oder was beim Client anders zu machen wäre?

Vielen Dank schon mal.

Gruesse,
Faxe

Faxe 12. Jan 2013 14:47

AW: UDP mit UTF8
 
So, nach ziemlich viel Geteste und Gegoogle klappt es in etwa so:

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: array of Byte; ABinding: TIdSocketHandle);
var
myUnicode: UnicodeString;
myUtf8 : UTF8String;
begin
SetString(myUtf8, PAnsiChar(@AData[0]), length(AData));
myUnicode := myUtf8;
ListBox1.Items.Add(myUnicode);
end;

Auf SetString und PAnsiChar zu kommen war bei mir irgendwie blockiert. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz