Hi, I am using D7 and ICS v5 on a Server / Client project. The client can send something like : 100 REQUEST HELP {somecommand}
and the server can answer with a small text, or a large one. In my example, there's a 104 kbytes file. Not very large, but large enough to trigger several DataAvailable events. I searched some examples, but most of them use LineMode and LineLimit. I'm afraid that's not an option. So I wrote the following code, but I'm still lost: procedure TMyClient.Event_DataAvailabe( Sender : TObject; Error : Word ); const BufSize = 4096; var zBuf : Array[0..BufSize-1] of Ansichar; Len : Integer; begin { Remember: we use line mode. We will always receive complete lines } with Sender as TWSocket do Len := Receive(@zBuf, BufSize ); // here I expect "Len" <= BufSize. If it's equal than "may be" there's more to // read. How can I be sure? Does ICS have some internal flag ? if Len = 0 then begin // Something happened!! What? Exit; end; if Len=-1 then begin // Seems to be the end of a long string. Once len = -1, can // this event be fired again? exit end; // Now the problem: // I must cache the received zBuf FRcvBuf := FRcvBuf+ string(zBuf); // If we read all the data, we display it if {Some condition met} then begin DisplayMemo.Lines.Add(FRcvBuf ); FRcvBuf := ''; end; end; Am I on the right track? Can somebody help me? TIA, Clément -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be