global problems

Ken Norris pixelbird at interisland.net
Tue Aug 2 02:47:07 EDT 2005


On Aug 1, 2005, at 9:52 PM, use-revolution-request at lists.runrev.com 
wrote:

> Date: Mon, 1 Aug 2005 18:35:30 -0700
> From: Mark Wieder <mwieder at ahsoftware.net>
> Subject: Re: global problems
>
> Ken-
>
> Monday, August 1, 2005, 5:47:01 PM, you wrote:
>
(snip)
>
>> Globals are for what they say they are. A global declared during
>> runtime _should_ be available in any open stack. Why would you want  
>> to
>> get rid of it, i.e., that's what they're for. Unless you want to do a
>> one-time setup to initialize multiple stacks, then destroy it. Of
>> course you could do the same thing with custom props, but it would be
>> more awkward.
>
> Maybe I'm missing something about globals here, but since you have to
> reference a global explicitly in a script in order to use it, I don't
> see why the global should persist if the stack that declared it is
> removed from memory.

Because you might have a _system_ of stacks which use the same global
>
> In other words, if I'm foolish enough to declare a "global x" in a
> piece of test code, why should that continue to haunt me when I dump
> my test stack and then open a completely different stack that happens
> to have a "local x" declaration in it? Am I missing something basic?

Maybe. It has to do with where the engine is.

When you are developing, the Rev application is open. It has the MC 
engine, and it retains the globals.

But if you develop a system of stacks for a built application, 
similarly, your main stack has the engine and retains the globals, 
which is normally precisely what you want. That's why you declare 
globals.

IOW, any script running under the same engine, regardless of which 
stack, can declare and operate on the same globals until the 
application is closed. AFAIK, all xTalks work this way.

For example, if you develop an built application GUI front end for an 
integrated system of stacks, you may very well want to change its 
settings, yet be consistent throughout all the stacks in that 
application. One easy way to do that is to declare globals.

When you close the app, i.e., the main stack, which has the engine, 
closes, and "poof", the globals are gone. Really gone. Opening Rev or 
any other Rev-built application will not respond to globals declared in 
the application just closed in this example.

But, to reiterate for clarity, if you are _developing_ in Rev, it has 
the engine, your 'Main' stack doesn't (until you build). Therefore, 
globals you declare while Rev is running will remain, can be called 
from _any_ script in _any_ stack running in the IDE.

At the risk of repeating myself, again, you just need to be aware of 
how it works, that's all. Whatever Rev thing is running retains the 
globals declared within it until it is closed.

I hope that sheds a little light on it.

All the best,
Ken N.




More information about the use-livecode mailing list