Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   socket sendbuffer Problem (https://www.delphipraxis.net/187825-socket-sendbuffer-problem.html)

codenoob 7. Jan 2016 09:45

socket sendbuffer Problem
 
Hi Comunity und Delphianer

Ich binn vor kurzem auf Delphi xe2 umgestiegen und habe in meiner Delphi Sammlung welche ich früher in Delphi 7 geschrieben habe Projekte die ich jetzt in der neueren Version von Delphi gerne weiter machen möchte.
Für mein Chat Projekt habe ich ne Server und ne Client Anwendung.
Mein Server konnte ich mit XE2 ausführen und der läuft auch wie gewohnt.
Allerdings macht mir der Client Kopfzerbrechen.

Mein Client wenn ich ihn mit Delphi 7 compiliere schikt er dem Server nach dem Connect Informationen die ungefähr so ausschauen.

34|OnConnect|Benutzername|Chatfarbe|

Wenn ich den Client im Delphi 7 Compiliere tut er dies ja auch, und der Server empfängt '34|OnConnect|Benutzername|Chatfarbe|' aber wenn ich ihn dann in XE2 Compiliere dann empfängt der Server nur ne '3' also nur das erste Zeichen.

Der Client schaut so aus.
Delphi-Quellcode:
procedure Send(Socket: TClientSocket; Data: string);
var
  Temp: string;

begin

  while (Length(Data) > 0) and (Socket.Connected) do begin
    Temp := Copy(Data,1,4096);

    Delete(Data,1,4096);
    repeat

    until Socket.SendBuffer(pointer(Temp)^,length(Temp)) <> -1;

    sleep(10);
  end;
end;


procedure SendData(Socket: TClientSocket; Data: string);

begin

  Data := inttostr(length(Data)) + '|' + Data;

  if Socket = nil then exit;
  if not Socket.Connected then Exit;

    Send(Socket,Data);

end;


procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);

begin

 ConnectionString := '|OnConnect|Benutzername|Chatfarbe|'
 
 SendData(Socket,ConnectionString);

end;
Weiss wer an was das liegen kann?

Besste Grüsse Tom

Klaus01 7. Jan 2016 09:48

AW: socket sendbuffer Problem
 
Vielleicht solltest Du anstelle von Strings - AnsiStrings verwenden.

XE2 arbeitet mit Unicode Zeichen (2Byte pro Zeichen).

Grüße
Klaus

codenoob 7. Jan 2016 09:53

AW: socket sendbuffer Problem
 
Danke Klaus hab jetzt aus

Temp: string;

ein

Temp: Ansistring;

gemacht und es funktioniert wieder lol binn ich ein Depp ;-)

Grüsse Tom


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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