![]() |
Probleme mit Asiatischen zeichen
Hallo,
Ich bin noch Anfänger, also seit mir bitte nicht böse. :( Also ich habe ein Problem mit Delphi 2009. Ich bin gerade dabei das ich ein Chat Programmiere (Socket Verbindung) So jetzt wollte ich mit (Socket.SendText) eine Nachricht senden u. mit (Socket.ReceiveText) empfangen soweit geht auch alles, nur bei der Ausgabe (Memo1) werden nur Asiatischen Zeichen ausgegeben. Ich habe schon Google benützt nur finde ich nichts. Bitte helft mir. :( Danke. |
AW: Probleme mit Asiatischen zeichen
Was sagt der Debugger zu dem Text, welcher über ReceiveText ankommt?
|
AW: Probleme mit Asiatischen zeichen
Zitat:
Fehler bekomme ich keinen. Client:
Delphi-Quellcode:
Server:
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin Memo1.Lines.Add(Socket.ReceiveText); end;
Delphi-Quellcode:
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer; Nachricht:AnsiString; begin Nachricht:=Socket.RemoteAddress + ': ' + Socket.ReceiveText; Memo1.Lines.Add(Nachricht); for i := 0 to Server.Socket.ActiveConnections - 1 do Server.Socket.Connections[i].SendText(Nachricht); end; |
AW: Probleme mit Asiatischen zeichen
Von welchem Typ ist ReceiveText bei dir?
Delphi-Quellcode:
Was sagt denn nun der Debugger?
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var s: AnsiString; begin s := Socket.ReceiveText; Memo1.Lines.Add(s); end; Was steht hier in S drinen. PS: ![]() |
AW: Probleme mit Asiatischen zeichen
Hallo,
Delphi-Quellcode:
Du schickst deine Nachricht als AnsiString und wunderst dich,
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer; Nachricht:AnsiString; dass asiatische Zeichen nicht korrekt übertragen werden ? Heiko |
AW: Probleme mit Asiatischen zeichen
Ich hatte es so verstanden, daß er was "Deutsches" versendet und Asiatisch ankommt,
Also ein tyypisches Unicodeproblem, wenn man was als Ansi vorliegen hat und es als Unicode interpretieren würde. Und SendText ist sowieso nur ANSI. |
AW: Probleme mit Asiatischen zeichen
Ich denke mal, dass das ein Bug in Delphi2009 ist. Wie das bei neueren Versionen verbessert wurde, weiß ich nicht.
Delphi-Quellcode:
Da ist wohl die Portierung nach Unicode nicht ganz vollständig. ;-)
// aus der unit ScktComp bei Delphi 2009
function TCustomWinSocket.ReceiveText: string; // aber: function TCustomWinSocket.SendText(const s: AnsiString): Integer; |
AW: Probleme mit Asiatischen zeichen
Jupp, in D2010 ist ReceiveText ein AnsiString.
Wenn das so ist, dann bleibt nur ein Bugfix (neues Delphi kaufen, fallsda Emba ungern Updates rausgibt ... oder wurde dieses doch tatsächlich mal in einem Update gefixt?) > Neuste Updates schon installiert? Aber da Indy eh eine Fremdkomponente ist, kann man diesen Teil auch selber upgraden. > ![]() |
AW: Probleme mit Asiatischen zeichen
Ja, das ist ein Bug (auch in D2010 offenbar), der sich durch einen Class Helper aber ganz leicht umgehen lässt wie ich hier gezeigt habe:
![]() Natürlich könnte man auch auf AnsiString zurück gehen wie es Embarcadero bei XE getan hat, wenn man das denn möchte. Das Prinzip ist dasselbe. |
AW: Probleme mit Asiatischen zeichen
Also, mit aktuellen Updates ist es im 2010 schon gefixt (AnsiString).
Da 2010 und 2009 etwa die selben Updatesphasen hatten, könnte es auch shcon im 2009 weg sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz