I know its a kludge but couldn't you do something like: <?livecode
constant x = 4 on somehandler put "within a handler, x =" && x & "<br>" end somehandler on run-it put "lc version is" && the version & "<br>" put "this web page shows the problem" & "<br>" put "here x = " && x & "<br>" somehandler put "and finally x still =" && x & "<br>" end run-it run-it ?> Regards Peter On 29 May 2012, at 17:02, Alex Tweedly wrote: > Thanks Igor, but you're talking about where constants can be declared; I was > talking about where they can be used. > > I read the dictionary the same way you do, in the context of declaration > (constants can be declared within or outwith handlers, with different > context). And I agree with Mark that redefining a constant is a bad idea. > > But neither of those was my issue - in my reply to Craig I did what I should > have done in the first place and included a complete script showing the > problem. Constants that have been properly, globally declared can be used > within handlers but do not take effect outside handlers. > > So in a revserver that is "just one big script" you cannot use the constants > except within any handlers. > > -- Alex. > > On 29/05/2012 05:51, Igor de Oliveira Couto wrote: >> Alex, I don't know if you and I are reading the dictionary in the same way: >> >> On 29/05/2012, at 9:00 AM, Alex Tweedly wrote: >> >> [...] >> >>> The dictionary entry for constant says: >>>> If you place the constant statement in a handler, you can use the constant >>>> anywhere in the handler. If you place the constant statement in a script >>>> outside any handler, you can use the constant anywhere in the handlers of >>>> that script. >>> NB - "can use the constant anywhere *in the handlers* of that script". >>> >>> That was a reasonable limitation in traditional Livecode - but seems less >>> reasonable in the context of revserver. >> [...] >> >> I *think* what the dictionary means - and please someone correct me if I'm >> wrong - is that there are 2 ways to declare a constant value: INSIDE a >> handler (like inside a mouseUp, enterField, etc.), or OUTSIDE any handlers >> (the same way you'd declare a SCRIPT VARIABLE). The 2 ways would be like >> this: >> >> INSIDE A HANDLER >> >> on enterField >> constant kIncrease = 3 >> answer kIncrease >> end enterField >> >> The problem with declaring the constant that way, is that it is defined only >> for THAT specific 'enterField' handler. If you also had a second handler >> that expected to use that value, such as...: >> >> on closeField >> answer kIncrease >> end closeField >> >> ...that would fail, because 'kIncrease' is defined only inside 'enterField'. >> To overcome that, you can declare the constant like this: >> >> >> OUTSIDE HANDLERS >> >> contant kIncrease = 3 >> >> on enterField >> answer kIncrease >> end enterField >> >> on exitField >> answer kIncrease >> end exitField >> >> ...would work, as 'kIncrease' will now be available to *all* handlers. >> >> In the context of revServer, this still applies. For instance: if your >> revServer application is just one big script - ie., a 'main' script that >> 'includes' or 'requires' others (which is, in effect, the same as having one >> long script) - then a constant declaration outside all handlers will in >> effect make it a global constant. >> >> I hope this helps! >> >> -- >> Igor Couto >> Sydney, Australia >> >> >> _______________________________________________ >> use-livecode mailing list >> use-livecode@lists.runrev.com >> Please visit this url to subscribe, unsubscribe and manage your subscription >> preferences: >> http://lists.runrev.com/mailman/listinfo/use-livecode >> > > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode