Delay function?
Denis Koroskin
2korden at gmail.com
Tue Sep 2 13:41:03 PDT 2008
On Wed, 03 Sep 2008 00:24:02 +0400, Brendan <brenzie at gmail.com> wrote:
> Jarrett Billingsley Wrote:
>
>> On Tue, Sep 2, 2008 at 1:37 PM, Chris R. Miller <
>> lordSaurontheGreat at gmail.com> wrote:
>>
>> > Brendan wrote:
>> > > Jarrett Billingsley Wrote:
>> > >
>> > >
>> > >> </blockquote></div><br>If you're expecting it to pause after each
>> > character.. you're missing braces around the body of the for loop,
>> this
>> > isn't Python ;)<br></div>
>> > >>
>> > >
>> > > Oooooh, what a foolish mistake! How could I forget that? Thanks for
>> > pointing it out.
>> > >
>> > > But the result isn't fruitful, though. When I run it, all I get is
>> an
>> > empty screen, then after many seconds the whole string is displayed
>> at once
>> > (not to mention I set the sleep time to 0.1 seconds). I'm probably
>> missing
>> > something. Any idea?
>> >
>> > Flush the output?
>> >
>> >
>> Totally.
>>
>> foreach(ch; s) { write(ch); fflush(stdout); system("pause 0.2"); }
>
> Thanks! With a little quick tweaking it worked. But, even though I see
> the effective result, I don't entirely understand what it means "to
> flush" the output. I've never heard of this concept before and Google
> doesn't seem to return any useful answers. Could you explain?
Google for "buffering". When you print something, it doesn't get displayed
immediately. Instead, the string is copied to some internal buffer and
when it gets full (or close to full) it is then flushed, i.e. its contents
copied to the console and buffer size reset. Something like this:
char[] buffer;
void writefln(char[] str)
{
buffer ~= str;
if (buffer.length > 1024) {
doTheRealPrinting(buffer);
buffer.length = 0;
}
}
More information about the Digitalmars-d-learn
mailing list