Using handler local variables of caller
dsc at swcp.com
Thu May 3 16:15:00 EDT 2012
Thanks, Ray! That is just what I wanted!
I do need to come up with a growth plan for when a future version of LiveCode does break it. (And maybe by then I'll have my script filter working.)
On May 3, 2012, at 1:25 PM, Ken Ray wrote:
> On May 1, 2012, at 9:03 PM, Dar Scott wrote:
>> Hi, Mark!
>> You hit the nail on the head.
>> You work with desktop externals, right? They don't have this limitation. Since iOS externals do have the limitation, I'm not going to go that way.
>> Here is a goofy solution:
>> function darzCommand
>> get 123
>> return "put " & it & " into it"
>> end darzCommand
> Trevor had a great (although sneaky) solution, posted a couple of years back (thank you, Scripter's Scrapbook!):
> He wanted to run a custom handler and have it set the value of "it" independently from "the result". The example he wanted to make work was:
> put the result into theError
> if theError is empty then
> -- 'it' contains the data from the web
> end if
> To do this, he has a special handler that "GrabSomeWebData" would call that uses the debugcontext to work its magic (I've shortened some of his global names for clarity in email):
> private command _SetValueOfItInCaller pValue
> global gTempStorageForHandlerLocalVar
> ## Store value in global
> put pValue into gTempStorage
> ## Store current debugcontext (debugger uses this)
> put the debugcontext into theContext
> ## the executionContexts is the list of handlers in the chain.
> ## This handler would be line -1.
> ## The handler that called this handler is -2.
> ## The handler that you want to set "it" in is -3
> set the debugcontext to line -3 of the executioncontexts
> ## Make the global gTempStorage available
> ## within context of handler we want to set "it" in. Then set it to the
> ## global var
> debugdo "global gTempStorage;put gTempStorage into it"
> ## restore debugcontext
> set the debugcontext to theContext
> ## cleanup
> delete global gTempStorage
> end _SetValueOfItInCaller
> I haven't tested it in LC 5.x, but I don't think anything's changed that would prevent it from working,
> Ken Ray
> Sons of Thunder Software, Inc.
> Email: kray at sonsothunder.com
> Web Site: http://www.sonsothunder.com/
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
More information about the Use-livecode