Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Asiatischen zeichen (https://www.delphipraxis.net/161018-probleme-mit-asiatischen-zeichen.html)

XzErO 12. Jun 2011 23:28

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.

himitsu 12. Jun 2011 23:33

AW: Probleme mit Asiatischen zeichen
 
Was sagt der Debugger zu dem Text, welcher über ReceiveText ankommt?

XzErO 12. Jun 2011 23:39

AW: Probleme mit Asiatischen zeichen
 
Zitat:

Zitat von himitsu (Beitrag 1106021)
Was sagt der Debugger zu dem Text, welcher über ReceiveText ankommt?

Hallo himitsu,

Fehler bekomme ich keinen.

Client:
Delphi-Quellcode:
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
Server:
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;

himitsu 13. Jun 2011 00:30

AW: Probleme mit Asiatischen zeichen
 
Von welchem Typ ist ReceiveText bei dir?

Delphi-Quellcode:
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var s: AnsiString;
begin
  s := Socket.ReceiveText;
  Memo1.Lines.Add(s);
end;
Was sagt denn nun der Debugger?
Was steht hier in S drinen.

PS: http://www.delphipraxis.net/133720-i...erzeichen.html

hoika 13. Jun 2011 08:50

AW: Probleme mit Asiatischen zeichen
 
Hallo,

Delphi-Quellcode:
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
Nachricht:AnsiString;
Du schickst deine Nachricht als AnsiString und wunderst dich,
dass asiatische Zeichen nicht korrekt übertragen werden ?


Heiko

himitsu 13. Jun 2011 09:06

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.

Gausi 13. Jun 2011 10:31

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:
// aus der unit ScktComp bei Delphi 2009

function TCustomWinSocket.ReceiveText: string;

// aber:

function TCustomWinSocket.SendText(const s: AnsiString): Integer;
Da ist wohl die Portierung nach Unicode nicht ganz vollständig. ;-)

himitsu 13. Jun 2011 10:35

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.
> www.indyproject.org

jaenicke 13. Jun 2011 11:09

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:
http://www.delphi-forum.de/viewtopic...=641063#641063

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.

himitsu 13. Jun 2011 11:23

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 13:42 Uhr.
Seite 1 von 2  1 2      

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