[fpc-pascal] How to poll for a byte in Input?

tcoq tcoq at free.fr
Fri Dec 9 19:58:54 CET 2011


I have found and tried WaitForSingleObject, using the following syntax:

ThereIsACharacterToRead :=   WaitForSingleObject(StdInputHandle,0) = 0;
While ThereIsACharacterToRead do
begin
  aByte := InputStream.ReadByte;
  ThereIsACharacterToRead :=   WaitForSingleObject(StdInputHandle,0) = 0;
end;

However, WaitForSingleObject always gives back 0, meaning there should be information. My logging tells me that information arrives at least 500ms afterwards and that ReadByte waits for it. Something is not working.
Thierry

----- Mail Original -----
De: "tcoq" <tcoq at free.fr>
À: "FPC-Pascal users discussions" <fpc-pascal at lists.freepascal.org>
Envoyé: Vendredi 9 Décembre 2011 17h56:13 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne
Objet: Re: [fpc-pascal] How to poll for a byte in Input?

On windows, I did not find WaitForSingleObject, which is actually going to wait for the file.
However I found ReadFileEx in the Windows API, which is an asynchronous read on the file. I'll try using that.

----- Mail Original -----
De: "Michael Van Canneyt" <michael at freepascal.org>
À: "FPC-Pascal users discussions" <fpc-pascal at lists.freepascal.org>
Envoyé: Vendredi 9 Décembre 2011 16h57:47 GMT +01:00 Amsterdam / Berlin / Berne / Rome / Stockholm / Vienne
Objet: Re: [fpc-pascal] How to poll for a byte in Input?
>...
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 at lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal



More information about the fpc-pascal mailing list