![]() |
Re: Komischer Fehler mit TClientSocket
Geht sogar noch etwas einfacher. Mit ReceiveBuf()
Jedoch muss der Buffer (Buf) vom Typ AnsiChar sein. Sonst kommt auch Zeichensalat raus.
Delphi-Quellcode:
procedure TForm1.sockRead(Sender: TObject; Socket: TCustomWinSocket);
const MAX_BUF = 100; var Buf : array[1..MAX_BUF + 1] of AnsiChar; Bytes : Integer; begin Bytes := Socket.ReceiveLength; while Bytes > 0 do begin Dec(bytes, Socket.ReceiveBuf(Buf, MAX_BUF)); Buf[MAX_BUF] := #0; Memo1.Text := Memo1.Text + Buf; end; end; |
Re: Komischer Fehler mit TClientSocket
Ja, ich habe es jetzt einfach so gemacht:
Delphi-Quellcode:
Ist am kürzesten und am verständlichsten (für mich) :)
var
s:ansistring; begin setlength(s,socket.ReceiveLength); socket.ReceiveBuf(s[1],socket.ReceiveLength); memo1.Lines.Add(s); end; Danke an alle. |
Re: Komischer Fehler mit TClientSocket
sry, bitte löschen
|
Re: Komischer Fehler mit TClientSocket
Ich hoffe, es ist okay, wenn ich diesen älteren Thread nochmal "aufwärme", aber ich habe gerade genau das gleiche Problem!
Ich sende einen String per .SendText und prüfe sogar, ob die richtige Anzahl der gesendeten Bytes mit der Länge des Strings übereinstimmen. Beim Client kommt auch die richtige Anzahl an Bytes an (Prüfung per .ReceiveLength), aber wenn ich dann mit .ReceiveText das ganze in einen String übernehme, erhalte ich nur wirre Zeichen. Momentan behelfe ich mir ebenfalls mit dem work-around per .SendBuf/.RevceiveBuf, aber wüsste doch gerne, was der Grund dieses Fehlers (?) ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 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-2025 by Thomas Breitkreuz