[fpc-pascal] Unbuffering I/O
Mark Morgan Lloyd
markMLl.fpc-pascal at telemetry.co.uk
Thu Aug 30 11:45:00 CEST 2018
On 30/08/18 09:00, Henry Vermaak wrote:
> On Thu, Aug 30, 2018 at 07:52:54AM +0200, Martin Schreiber wrote:
> In order to flush textfiles automatically I use> "> ttextrec(<thefile>).flushfunc:= ttextrec(<thefile>).inoutfunc;> "> after it is opened.
> Reading text.inc this morning lead me to believe this is the correctway. This is what the RTL does when opening serial devices inFileOpenFunc(), for example. There's a comment inside Flush() that saysthat InOutFunc() should be used to flush, since the FlushFunc() may notbe assigned.
I've just checked this and unfortunately it doesn't do very much for the
standard device (?) used by WriteLn() etc., i.e. as would be used for a
quick-and-dirty program.
I've tried
ttextrec(StdErr).flushfunc:= ttextrec(StdErr).inoutfunc;
// Flush(StdErr);
while true do begin
// Flush(StdOut); // Has limited effect
ttextrec(StdErr).flushfunc:= ttextrec(StdErr).inoutfunc;
and
program(input, output, error)
..
// error.flushfunc:= error.inoutfunc;
// Flush(StdErr);
while true do begin
// Flush(StdOut); // Has limited effect
output.flushfunc:= output.inoutfunc;
(Is that latter form even valid any more?)
Please don't anybody put any effort into it- it's a very minor niggle
from my POV.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-pascal
mailing list