On Thu, Aug 30, 2018 at 09:45:00AM +0000, Mark Morgan Lloyd wrote:
> 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.

It definitely works for me.  I made a program flush.pas that looks like this:

begin
        ttextrec(output).flushfunc := ttextrec(output).inoutfunc;
        writeln('hi there');
        sleep(1000);
end.

Running `./flush > out.txt` and `tail -F out.txt` shows the output
immediately, while removing the flushfunc assignment causes a delay of a
second before the output appeared in the file.

Henry
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to