Extracting a reference to a stack
david at viral.academy
Sun Aug 9 02:43:50 CEST 2015
Yes - you're right. The long name is the only case and like you I only use
long ids in the use cases I have. Except when I store references when I use
the ruggedID handler of the IDE - that should be a native reference I think?
On Sunday, August 9, 2015, Richard Gaskin <ambassador at fourthworld.com>
> David Bovill wrote:
> > Richard Gaskin wrote:
> > >> function ObjectStack pObj
> > >> return char (offset(" of stack ", pObj)+4) to -1 of pObj
> > >> end ObjectStack
> > The test case would be "this is a stack of rubish" as a substack -
> > that would break your code?
> It would have to be "this is a of stack of rubbish" - but even then it
> wouldn't break since the long ID of the object would be:
> button id 1003 of card id 1002 of stack "this is of stack of rubbish"
> of stack "/Users/t/Desktop/stack.livecode"
> ...in which the first occurrence of " of stack " is the one we want.
> We could break it by changing the use case: instead of requiring long IDs
> (I rarely anything else) we might pass in a long name, in which a button
> might have a name that includes " of stack ".
> But as soon as we allow other forms of object references to be passed in
> we're probably going to want to convert those to long IDs anyway. And
> since we can't guarantee the object reference is valid we'd probably need
> to add a try structure there as well:
> function ObjectStack pObj
> put the long id of pObj into pObj
> catch tErr
> throw "Error in call to ObjectStack: invalid object reference"
> end try
> return char (offset(" of stack ", pObj)+4) to -1 of pObj
> end ObjectStack
> Any other edge cases that should be accounted for?
> Richard Gaskin
> Fourth World Systems
> Software Design and Development for the Desktop, Mobile, and the Web
> Ambassador at FourthWorld.com http://www.FourthWorld.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