On Fri, 9 Dec 2011, tcoq wrote:
Hello, I'm trying to poll the input stream to see whether there is a new character available, without blocking my software. I've tried "Read" and "THandleStream.ReadByte" but with no success: when the input is empty, the program just waits. Is there a way to ask whether the input stream is not empty, without waiting and without using threads/processes? And, in addition, is there an OS-independent way (linux, windows)? something like: var inputStream: THandleStream; aByte: Byte; begin InputStream := THandleStream.Create(StdInputHandle); try while true do begin {$I-} aByte := InputStream.ReadByte; DoSomethingWithByte(aByte); result := true; end; except On E: EStreamError do result := false; end; //This code here is never executed ThereIsNothingInInputStream_DoDefault; end;
You must use fpSelect() or Poll on the handle on linux/unix. On windows, you'll need to WaitForObject() or so on the file handle. Michael. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal