Thanks again, Ian. Yes, I followed that "defining and using globals in an application" discussion very closely, and of all the great ideas that were shared I liked the accessors and the arrays best.
About my post from 8 hours ago: I apologize for wasting people's time. It was what we like to call "user error" (user being me in this case): A handler was forwarding the openCard message which in turn reinitialized the globals, and thus the new value got lost. My only excuse is that it was 3 AM on a Sunday. But this wasn't a total waste of time for me. I have learned that User Guide is correct, and indeed the global command (declaration) can be included either at the top of the script or inside a handler. If it is used at the top of the script, it is available to all handlers in the script. I like declaring it in every handler because then I can see at a glance, w/o scrolling, a list of all variables (global and local) that are used in the handler. I like short, self-contained, self-documented, portable handlers. Just a matter of taste. Thanks! Slava > -----Original Message----- > From: [email protected] [mailto:use-livecode- > [email protected]] On Behalf Of Ian McKnight > Sent: Sunday, July 10, 2011 4:03 AM > To: How to use LiveCode > Subject: Re: global variable change in substack not available to main stack > > Hi Slava > > I understand what you mean about portability - I've been caught out myself > many times reusing a handler and forgetting to copy the global declarations at > the top of the script but you may find a post by Richard Gaskin to this list a few > days ago useful for future projects. I paste his post here for convenience (the > subject of the thread is - "defining and using globals in an application" > > >-- snip > > On 10 July 2011 08:39, Slava Paperno <[email protected]> wrote: > > > Thanks Stephen and Ian. It is true that I declare each global > > variables inside every handler where it is used. I have a sizable > > application now where this strategy is employed everywhere. In doing > > so I followed this statement in the User Guide to 4.6.2: > > > > 5.5.4 Global Variables (page 143, below the pink Important box) "You > > can use the global command either inside a handler, or outside any > > handler at the top of a script (like a script local)." > > > > In choosing between these two recommendations I decided that putting > > the global declaration inside the handler makes the handler more portable. > > > > But I'll follow your advice and mess with this some more after a good > > night's sleep. > > > > Gratefully, > > > > Slava > > > > > -----Original Message----- > > > From: [email protected] [mailto:use-livecode- > > > [email protected]] On Behalf Of Ian McKnight > > > Sent: Sunday, July 10, 2011 2:23 AM > > > To: How to use LiveCode > > > Subject: Re: global variable change in substack not available to > > > main stack > > > > > > Hi > > > > > > I just recreated you scripts in a stack. > > > > > > Stephen Barncard is correct the more usual place to put the global > > > statement is outside the handlers at the top of the script. > > > > > > However. Your original card script is incomplete since the 'put' > > > statement > > > needs to be put into a handler. > > > > > > eg > > > global gBgColor > > > > > > on openstack -- or preOpenStack or whatever > > > put 0, 0, 0 into gBgColor > > > end openstack > > > > > > When I made this change the gBgColor reflects changes made in the > > > mousedown script. > > > > > > > > > BTW I know that it works the way you have it but when using colour > > > info like > > > 0,0,0 I would recommend putting it into quotes "0,0,0" > > > > > > HTH > > > > > > On 10 July 2011 07:02, Slava Paperno <[email protected]> wrote: > > > > > > > In openCard script of the main stack: > > > > > > > > global gBgColor > > > > put 0, 0, 0 into gBgColor > > > > > > > > > > > > In a button script in a substack: > > > > > > > > on mouseUp > > > > global gBgColor > > > > > > > > answer color with gBgColor --white is selected > > > > put it into gBgColor > > > > > > > > put gBgColor & cr after msg > > > > --255, 255, 255 > > > > end mouseUp > > > > > > > > In the Variables panel below script editor (after it is > > > > refreshed), gBgColor is shown to be 0, 0, 0. > > > > > > > > In the Message box: > > > > > > > > put gBgColor > > > > --0, 0, 0 > > > > > > > > > > > > In other words, the change to a global variable that is made in a > > > substack > > > > is not available to the global variable of the same name in a > > > > script > > > in the > > > > main stack. > > > > > > > > Just last week I carefully followed the discussion of the use of > > > global > > > > variables (and even participated a little by quoting the User > > > > Guide > > > on the > > > > availability of globals to all substacks), but now I see the same > > > problem > > > > that was reported by the original poster. > > > > > > > > Is it just me now? Or is it the late hour? > > > > > > > > Slava _______________________________________________ use-livecode mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
