Einzelnen Beitrag anzeigen

XoRiC

Registriert seit: 20. Sep 2005
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

TClientSocket - SendText (AnsiString), ReceiveText (String)

  Alt 25. Mär 2010, 13:44
Hi,

ich habe noch kleinere Schwierigkeiten mit der Umstellung eines älteren Projekts auf UniCode seit ich Delphi 2009 verwende. Ich sende mit einer TClientSocket Komponente Text an einen Server. Die SendText Prozedur im Client verlangt dabei als Parameter const S: AnsiString, was mir ganz recht ist, da ich ausschließlich Ascii-Zeichen sende und in meinem Projekt eigentlich keinen Unicode brauche. Hier ein Minimalbeispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var D: AnsiString;
begin
  D := 'Hallo!';
  ClientSocket1.Socket.SendText(D); { SendText(const S: AnsiString) }
end;
Daraufhin empfängt der Server den Text. Die ReceiveText Funktion des Sockets liefert jedoch keinen AnsiString, sondern einen String zurück, was ja nun UniCode sein sollte.

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
  var D: String;
begin
  D := Socket.ReceiveText; { ReceiveText: String }
  showmessage(D); // gibt Mist aus (chinesische Zeichen wenn ich mich nicht irre)
  showmessage(AnsiString(D)); // gibt auch Mist aus ('???ton' oder so ähnlich)
end;
Lediglich die Länge des Strings stimmt. Ich habe ein bisschen rumprobiert, aber auch so klappt es nicht:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
  var D: AnsiString;
begin
  D := AnsiString(Socket.ReceiveText);
  showmessage(D); // gibt wie oben auch Mist aus
end;
Daraufhin habe ich mal die Strings als CharArray ausgeben lassen:
- Der Client sendet 72, 97, 108, 108, 111, 33 ('Hallo!').
- Der Server empfängt 24904, 27756, 8559, 116, 111, 110.

Kann jemand sagen was ich falsch mache, bzw wo ich den Code abändern muss um in der TServerSocket Komponente den originalen Text 'Hallo!' zu bekommen? Am besten gleich als AnsiString

Viele Grüße und Danke für Tipps,
Xoric
"Gods are fragile things; they may be killed by a whiff of science or a dose of common sense."
- Chapman Cohen
  Mit Zitat antworten Zitat