Get a handler from a script

Mark Smith mark at maseurope.net
Sun Mar 19 08:35:43 EST 2006


This might be dealt with better with a 'try...catch' structure. I  
don't know much about the error numbers that Rev produces, but

try
   cmdName
catch tError
   put tError
end try

where I know handler cmdName is commented out consistently produces  
this error string:
573,3,1,cmdName

This may or may not be useful in the context you described, but  
perhaps offers another way of testing for the existence or  
availability of a handler.


Mark


On 19 Mar 2006, at 13:18, David Burgun wrote:

> Hi,
>
> The problem is that if you are doing something like this:
>
> if the script of myObject contains "on HandlerName" then
>   send HandlerName to myObject
> end if
>
> This this will work if the Hander is NOT commented out, but will  
> fail with an error if the handler IS commented out. Also if you  
> have a comment in a Script that just happens to contain "on  
> HandlerName" then the "if" will succeed even though there is no  
> handler defined.
>
> I had a problem that took me ages to figure out. In a script I had  
> something like the following:
>
> --on Update make sure the field is not selected
>
> which meant that:
>
> if the script of myObject contains "on Update" then
>
> succeeded, but the send statement failed since there wasn't really  
> a handler called "update" defined. Checking for "end Update" *may*  
> have worked, as long as there was not a line that read something like:
>
> send Update to myObject
>
> Also checking for "end Update" slows the whole process down.
>
> What would be nice is the ability to check if a (real) handler  
> exists not just that the script contains text that looks like a  
> handler defintion. Something like this would be good:
>
> if exists(handler "Update" in script of myObject) then
>
> Which would make it 100% foolproof.
>
> All the Best
> Dave
>
> On 17 Mar 2006, at 12:19, Mark Smith wrote:
>
>> Commenting would only affect things if the wholeMatches is set to  
>> true - normally, lineOffset will get the right line even if it's  
>> commented out, no?
>>
>> Mark
>>
>> On 17 Mar 2006, at 12:06, David Burgun wrote:
>>
>>> Hi,
>>>
>>> Of course none of the solutions so far work if the function is  
>>> commented out. To make the code 100% foolproof is a lot of work.  
>>> I was doing something similar and found that comments made life  
>>> really difficult.
>>>
>>> All the Best
>>> Dave
>>>
>>> On 17 Mar 2006, at 11:42, Robert Brenstein wrote:
>>>
>>>>> Perhaps using
>>>>>
>>>>> set the wholematches to true
>>>>> put lineOffset("on" && pHandlerName, pScript) into tStart
>>>>> if tStart is 0 then put lineOffset("function" && pHandlerName,  
>>>>> pScript) into
>>>>> tStart
>>>>> put (lineOffset("end" && pHandlerName, pScript) +1 into tEnd
>>>>>
>>>>>
>>>>> answer tStart & cr & tEnd
>>>>>
>>>>> Jim Ault
>>>>> Las Vegas
>>>>>
>>>>
>>>> Unfortunately, wholematches can't be used, at least for the  
>>>> first lineoffset, because there are likely some parameters  
>>>> further in that line. The alternative to lineOffset is to use  
>>>> regex.
>>>>
>>>> A truly generic function would need to know whether it searches  
>>>> for command or function, because it is possible to have one of  
>>>> each with the same name.
>>>>
>>>> Robert
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution




More information about the Use-livecode mailing list