[REBOL] Nobody wants to play with me :-(

> Delivered-To: [EMAIL PROTECTED]
> From: [EMAIL PROTECTED]
> Date: Thu, 23 Dec 1999 14:28:27 -0800
> Subject: [REBOL] Nobody wants to play with me :-(
> Message-Id: <[EMAIL PROTECTED]>

> As nobody else appears to be entering holiday demos, I am entering one more :-)
>
> This is actually a proof of concept for a series of text-gui.r functions I
> have written (needed for several upcoming work-related projects).

Fiddling with your previous %christmas.r I found a problem which could show up with 
this
function (from %greetings.r) which is the same code

screensize: func [/local xwidth yheight cons screen-dimensions][
    cons: open/binary [scheme: 'console]
    print "^(1B)[7n" screen-dimensions: next next to-string copy cons
    close cons

    parse screen-dimensions [copy yheight to ";" thru ";" copy xwidth to "R" to end]
    reduce [(load xwidth) - 1 (load yheight) - 2]
]

If you write something at the console before the 'print gets executed then the 
following 'next 'next
would eat other chars than the expected "^(1b)[" and then (load xwitdh) would fail
E.g. that happens if you strike some keys while the script is not yet arrived at 
'screensize
(simulated with a 'wait)

wait 3 screensize

I would change
    print "^(1B)[7n" screen-dimensions: next next to-string copy cons
in
    print "^(1B)[7n" screen-dimensions: to-string copy cons

and
    parse screen-dimensions [copy yheight to ";" thru ";" copy xwidth to "R" to end]
in
    parse screen-dimensions [ thru "^(1b)[" copy yheight to ";" thru ";" copy xwidth 
to "R" to end]

resulting in

screensize: func [/local xwidth yheight cons screen-dimensions][
    cons: open/binary [scheme: 'console]
    print "^(1B)[7n" screen-dimensions: to-string copy cons
    close cons

    parse screen-dimensions [ thru "^(1b)[" copy yheight to ";" thru ";" copy xwidth 
to "R" to end]
    reduce [(load xwidth) - 1 (load yheight) - 2]
]

Ciao,
Daniele.

Reply via email to