Hi, > The following (attached) is a programming problem I've implemented. > Now I know the way I've done the EOF test is not correct, otherwise it > would not crash with a runtime error of 106.
It doesn't crash here as long as only valid integers are entered. The doc for RTE 106 reads: "Invalid numeric format: Reported when a non-numeric value is read from a text file, when a numeric value was expected." The standard input is never closed during the program - so you will never get an eof from it (by entering "normal" characters). > Could someone show me the correct way of reading from stdin until there > is no more input ? You have to parse the input yourselves, for example like this (beware: quick&dirty code and assuming that with "no more input" you mean an empty line): procedure ParseString(s : String; var i, j : Integer); begin val(Copy(s, 1, Pos(' ', s)-1), i); Delete(s, 1, Pos(' ', s)); s := TrimLeft(s); val(s, j); WriteLn(i, ' ', j ); end; var i: longInt; j: longInt; s : String; begin repeat readln(input, s); s := TrimLeft(TrimRight(s)); if (s <> '') then begin ParseString(s, i, j); writeLn(getMaxCycle(i, j)); end; until (s = ''); end. This is required when using stdin only - on normal text files the eof is reported properly and your way of reading in data using read(ln) works. (As long as the input is correct). Hth, Thomas _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal