[BUG] GPC - a char killer?_(re)
Fri, 11 Apr 1997 17:33:07 +0200 (MET DST)
According to Sven Engelhardt:
The compiled program "eats up" the first char if standard input
is not a terminal. This is because when `Input' is `reset' at
startup, the first char is read in to `Input's file buffer
variable. If you would `read' the char rather than `getchar'ring
it, you would get it.
To work around, use the `eoln' function to check whether a char
has been read in like this:
> program test1(input,output);
>
> function getchar:integer; C;
>
> var k:integer;
>
> begin
if not eoln ( Input ) then
k:= ord ( Input^ )
else
> k:=getchar;
> while (k<>-1) do
> begin
> writeln(k);
> k:=getchar;
> end;
> end.
To fix this bug (?) it would be necessary to rewrite parts of the RTS,
but I am not sure whether we should do that because I can imagine that
GPC's behaviour is as the ISO Standard requires. (But I am not in the
position to judge that. ;-)
Hope this helps,
Peter
Dipl.-Phys. Peter Gerwinski, Essen, Germany, free physicist and programmer
peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201]
maintainer GNU Pascal [970401] - http://home.pages.de/~gnu-pascal/ [970125]
Peter Gerwinski (peter@agnes.dida.physik.uni-essen.de)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es