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;
  

(PS. In windows, I traced the "readByte" procedure down to a Windows API 
function: ReadFile in Kernel32. This seems to be a blocking function).
Best regards,
Thierry
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to