SOCKETY w Codegear RAD

0

Witam

Może głupi problem ale nie mogę sobie z nim poradzić. Kiedyś w Delphi 7 pisałem komunikatora.
socket.sendtext wysyłał wiadomość którą odbierał serwer i wszystko było ok. Ten sam kod w CodeGear powoduje że odebrana wiadomość przypomina chińskie znaczki :)
Czy ktoś miał podobny problem ?

0

Podaj kod jak wysyłasz i odbierasz tą wiadomość.

0

Nie ma tu żadnych udziwnień. Normalnie
Client przy wysyłaniu po button click:

ClientSocket.Socket.SendText(zmiennastring);

Serwer ma eventa na onclientread gdzie jest showmessage(Socket.ReceiveText);
W Delphi 7 działa ok tu niestety nie

0

Przykład komunikatora który powinien działać a mi też w Codegear wywala chińskie krzaczki :)

http://www.delphibasics.info/home/delphibasicssnippets/simpletcpsocketschatexample/SimpleTCPSocketsChatExample.rar?attredirects=0&d=1

0

Może ma jakieś znaczenie, bo parametr do Send przyjmuje AnsiString, spróbuj zrzutować, może coś da.

0

niestety rzutowanie nie pomaga

przy wysyłaniu dałem
form1.ClientSocket1.Socket.SendText(ansistring(form2.Memo1.Text+#13#10))

przy odbiorze
showmessage(string(Socket.ReceiveText));

chińskie krzaki w załączniku :)

0

warningi przy kompilacji są sprzed poprawy

0

Czyli jednak coś dochodzi? Z tego co widać tylko część wiadomości jest po chińsku? Patrzyłem w necie i na forum Embacaderero i nic nawet tam nie ma o takim problemie. Bardzo dziwne to jest. A sam tekst próbowałeś bez #13 i #10?

0

No dochodzi :) ja też szukałem po necie i nic. Bez # też próbowałem to samo. Nie mam pojęcia o co chodzi. Nie lubię się poddawać ale chyba odpuszczę sobie sockety i pobawię się z TCPClient, Server.

0

TCPClient i TCPServer to też sockety.

0

A ja polecam: http://piechnat.pl/article/simpletcp.html - przydaje się przede wszystkim w aplikacjach pisanych w WinAPI. Nie mam jednak pewności jak zachowa się w nowszych Delphi (ewentualny problem ze stringami), ale to polecam Ci sprawdzić samodzielnie.

0

Wiem że też sockety ale troszkę inne :)

0
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  s: AnsiString;
begin
  SetLength(s, Socket.ReceiveLength);
  SetLength(s, Socket.ReceiveBuf(Pointer(s)^, Length(s)));

  ShowMessage(s);
end;
0

Działa !
Dzięki wielkie za pomoc !

1 użytkowników online, w tym zalogowanych: 0, gości: 1