newLISP Fan Club

Forum => newLISP Graphics & Sound => Topic started by: t3o on August 20, 2014, 12:32:47 PM

Title: locale problem in button-demo.lsp (OSX, 10.6.0)
Post by: t3o on August 20, 2014, 12:32:47 PM
hi,



I have OSX with newlisp 10.6.0 and newLISP-GS v.1.63 installed with homebrew.

 

I tried the button-demo.lsp from http://www.newlisp.org/guiserver/guiserver.lsp.html and ran into an error.



The line


(gs:set-color 'ColorPanel (random) (random) (random))


resulted in a message "Could not invoke method set-color with MAIN:ColorPanel" in a gui dialog.



Adding (println (random)) to the code printed something like:

0,84018771715471



I could fix the problem by either setting the locale to "en_US" (from "de_DE.UTF-8") or by converting the random number to a string with "," replaced by ".":



; use prandom instead of random:
(define (prandom)
(replace "," (string (random)) ".")
)


Shouldn't the locale be irrelevant as there's no output in button-demo.lsp?

What I mean is.. shouldn't the random float be just a value -- nothing that has comma or period when interpreting its value?



(Is there an implicit conversion to a string where the locale plays its role? Is that useful?)



Curious

 t3o
Title: Re: locale problem in button-demo.lsp (OSX, 10.6.0)
Post by: Lutz on August 20, 2014, 07:05:05 PM
The message protocol with guiserver.jar is text-based and relies on the locale set to "C" to guarantee the "." (dot) as decimal separator. This is why all demo programs start with the statement (set-locale "C"). Unless the homebrew installer has changed this, you should not see this error.



If you are running newLISP on OSX you can use the installer from the newlisp.org website, no homebrew installer is required.