Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TClient/Server Socket erfindet leere Zeilen (https://www.delphipraxis.net/11353-tclient-server-socket-erfindet-leere-zeilen.html)

andy3453 5. Nov 2003 01:28


TClient/Server Socket erfindet leere Zeilen
 
Moin,

ich habe hier ein nerviges Problem mit TServerSocket / Client Kompos.
Server:
Delphi-Quellcode:
 
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Append(Socket.ReceiveText);
end;
Client:
Delphi-Quellcode:
procedure senden;
begin
    Form1.ClientSocket1.Socket.SendText(Form1.Memo1.Lines.Text);
end;
Lokal ist alles wunderbar, aber sobald ich das ganze übers Internet mache hat das Ding plötzlich mehr Zeilen ( leere ) :gruebel:

z.B.:

Clientmemo:

wert1
wert2
wert3
wert4
wert5


Servermemo:

wert1
wert2
wert3

wert4
wert5


Gibt es dabei soetwas wie ein Sync Problem?
Interessanterweise sind die Leerzeilen immer an der selben Stelle, aber lokal tritt es halt nicht auf.

Wer kann mir da helfen? Langsam werde ich wahnsinnig :wall:

viele Grüße

Andy

Schubi 5. Nov 2003 08:19

Re: TClient/Server Socket erfindet leere Zeilen
 
Probier mal mit den beiden Eigenschaften WantReturns uns Wordwrap vom Memo ein bisschen herum!

Normalerweise müsstest du beim Server
Wordwrap := False;
WantReturns := True;

WantReturns schaltet die Zeilenumbrüche ein, und Wordwrap verhindert ein Automatisches umbrechen!

Beim Client Wordwrap auf True, sonst musste immer so lästig scrollen.


Mein Verdacht:
Das Client-Memo bricht mit jedem von dir reingemachten Return um:
Zeile1
Zeile2
Zeile3

Dann sendest du das Ganze zum Server, und zwar als String:
'Zeile1'+#13+'Zeile2'+#13+'Zeile3'

Wenn nun das Server-Memo den String erst mit Wordwrap umbricht (Zeile zuende) und DANN die #13 interpretiert haste genau dein Problem.

Nur so ne Idee!

Oder: Das Server-Memo is kleiner als das vom Client. Also entwerder gleiche größe oder beim Server Wordwrap auf False...

Kamil 5. Nov 2003 09:22

Re: TClient/Server Socket erfindet leere Zeilen
 
Nimm anstatt procedure
Memo1.Lines.Append(Socket.ReceiveText);
die folgende Zeile
Memo1.LInes.Text:=Memo1.Lines.Text+Socket.ReceiveT ext;

(Appand geht immer in die nächste Zeile wenn du etwas hinzugefüt hast)

andy3453 6. Nov 2003 00:14

Re: TClient/Server Socket erfindet leere Zeilen
 
Danke Kamil :thuimb:
der Tip hats gebracht. Zwar tritt der Fehler immernoch ein einziges Mal in dem kompletten Memo auf, aber das
habe ich einfach gelöst, indem ich Leerzeilen rausfilter. Nicht schön, aber selten :roll:


viele Grüße
Andy


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