Difference between revisions of "TWSocket.Receive"
Jump to navigation
Jump to search
Markus.humm (talk | contribs) |
Markus.humm (talk | contribs) |
||
Line 21: | Line 21: | ||
== Best practices == | == Best practices == | ||
− | * never do any message processing like Application.ProcessMessages or | + | * never do any message processing like Application.ProcessMessages or GetMessage inside a eventhandler, since it will raise the same event again for the very same data! |
* if the data received needs lengthy processing a separate thread for this might be a good idea since the further data can only be received after the event has been processed completely. In most cases a separate thread is not necessary though. | * if the data received needs lengthy processing a separate thread for this might be a good idea since the further data can only be received after the event has been processed completely. In most cases a separate thread is not necessary though. | ||
== How to == | == How to == |
Revision as of 18:48, 21 December 2007
Main page -> ICS component reference -> TWSocket -> Receive
Definition
function Receive(Buffer:Pointer; BufferSize:Integer): integer;
Description
Receive is used in the OnDataAvailable-Event to actually fetch the received data. The parameters needed are a buffer where the data will be placed and the size of that buffer. The return value of Receive specifies how many bytes where actually read and put in the buffer. If the buffer is too small, OnDataAvailable will occur again until all data is received.
Example
procedure WSocket1OnDataAvailable(Sender: TObject; ErrCode: Word); var buf:array[1..64] of byte; len:Integer; begin if ErrCode <> 0 then exit; len:=Receive(@buf, sizeof(buf)); // here your procesing of the data will take place end;
Best practices
- never do any message processing like Application.ProcessMessages or GetMessage inside a eventhandler, since it will raise the same event again for the very same data!
- if the data received needs lengthy processing a separate thread for this might be a good idea since the further data can only be received after the event has been processed completely. In most cases a separate thread is not necessary though.