Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komischer Fehler mit TClientSocket (https://www.delphipraxis.net/120903-komischer-fehler-mit-tclientsocket.html)

toms 18. Sep 2008 18:38

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;

wth 18. Sep 2008 18:43

Re: Komischer Fehler mit TClientSocket
 
Ja, ich habe es jetzt einfach so gemacht:
Delphi-Quellcode:
var
  s:ansistring;
begin
  setlength(s,socket.ReceiveLength);
  socket.ReceiveBuf(s[1],socket.ReceiveLength);
  memo1.Lines.Add(s);
end;
Ist am kürzesten und am verständlichsten (für mich) :)

Danke an alle.

wth 18. Sep 2008 18:44

Re: Komischer Fehler mit TClientSocket
 
sry, bitte löschen

Grishnak 6. Apr 2009 23:24

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.
Seite 2 von 2     12   

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