Externals Under 2.7.x

Dave dave at looktowindward.com
Sat Feb 10 07:36:03 EST 2007


Hi,

Thanks a lot Mark and Trevor, as usual this list has proved to be  
worth its weight in RAM!

> Something like "revLastExternalError".  By always setting this  
> variable to any error messages from within the external you  
> maintain standard behavior for functions and have a variable to  
> check for errors:

Except that if the function was non-external then you'd still have to  
have different code paths?

All the Best
Dave

On 10 Feb 2007, at 04:28, Trevor DeVore wrote:

> On Feb 9, 2007, at 7:10 PM, Mark Wieder wrote:
>
>> If you set error to False you still have control over the result  
>> value
>> returned to the engine when your external routine exits. This is the
>> proper way to signal to the engine that an error has occurred, and
>> that way the script that called the external routine can parse the
>> result and determine whether or not an error has occurred.
>>
>> For functions you will normally return your result in the "it"
>> variable and thus you have "the result" available for an error
>> message. I've got a writeup on this at
>>
>> http://www.revjournal.com/tutorials/everything-you-know.html
>
> Interesting article Mark.  I wasn't aware that the result was set  
> when calling functions.
>
> As for storing your result in the "it" variable, one potential  
> issue I see (if I am understanding correctly) is that functions  
> defined in an external would have different basic behavior than  
> functions defined in Revolution (Transcript).  Any function defined  
> in an external would have to be called like this in order to work  
> properly:
>
> put getTheNumberFour() into theError
> answer it -- CONTAINS THE NUMBER "4"
>
> because if the user called the external function like this:
>
> get getTheNumberFour()
>
> then both "it" and "the result" would contain the error message.   
> Plus you would lose the ability to put result of the function into  
> a meaning variable name without adding another assignment (i.e. put  
> it into theMeaningVariableName).
>
> I think this is why I prefer something along the lines of a  
> GetLastError() call.  Or another option would be to define some  
> other variable that was responsible for holding errors from  
> external functions.  Something like "revLastExternalError".  By  
> always setting this variable to any error messages from within the  
> external you maintain standard behavior for functions and have a  
> variable to check for errors:
>
> put getTheNumberFour() into theNumberFour
> if revLastExternalError is not empty then
>   answer "How did it mess up returning the number 4? (" &  
> revLastExternalError & ")"
> end if
>
>
> -- 
> Trevor DeVore
> Blue Mango Learning Systems - www.bluemangolearning.com
> trevor at bluemangolearning.com
>
>
> _______________________________________________
> 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