Here's a quick solution: function ownerStack pObjLongID replace " of " with numtochar(8) in pObjLongID set the itemdel to numtochar(8) return item -1 of pObjLongID end ownerStack
A more general solution is what I use in my library. The getItem() function is so useful that I use it *everywhere*. function ownerStack pObjLongID -- returns the name of the stack containing pObjLongID -- by Peter M. Brigham, pmb...@gmail.com — freeware -- requires getItem(), getDelimiters() put getItem(pObjLongID,-1," of ") into tStack put the name of tStack into stackName return stackName end ownerStack function getItem pContainer, pIndex, pDelim -- returns item # pIndex of pContainer, given itemdelimiter = pDelim -- could just "get item pIndex of pContainer" in the calling handler but -- then have to set and restore the itemDelimiter, so this is less hassle -- for instance, the following returns the filename from the filepath: -- put getItem(tPath,-1,"/") into tFileName -- defaults to pDelim = tab -- allows pIndex to be a range, eg "3-5" -- in that case enclose the range in quotes -- also allows pDelim to be a string of characters -- so you could do this: -- getItem("a//b//c//d//e//f",4,"//") -> d -- or: -- getItem("a or b or c or d or e or f","3-5"," or ") -> c or d or e -- which expands the possibilities for use enormously -- by Peter M. Brigham, pmb...@gmail.com — freeware -- requires getDelimiters() -- first, if pDelim is a string then get a delimiter that is not found -- in pContainer and use it in place of pDelim if pDelim = empty then put tab into pDelim if len(pDelim) > 1 then put getDelimiters(pContainer) into tempDel if tempDel begins with "Error" then return "Error in getDelimiters()" end if replace pDelim with tempDel in pContainer else put pDelim into tempDel end if -- now parse pIndex to take care of ranges and negative values -- and get the item(s) requested put offset("-",pIndex) into dashPos set the itemdelimiter to tempDel if dashPos > 1 then -- don't catch if pIndex is something like -1, -2, etc put char 1 to dashPos-1 of pIndex into tStart put char dashPos+1 to -1 of pIndex into tEnd put item tStart to tEnd of pContainer into theItem replace tempDel with pDelim in theItem else put item pIndex of pContainer into theItem end if return theItem end getItem function getDelimiters pText, nbr -- returns a cr-delimited list of <nbr> characters -- not found in the variable pText -- use for delimiters for, eg, parsing text files, manipulating arrays, etc. -- usage: put getDelimiters(pText,2) into tDelims -- if tDelims begins with "Error" then exit to top -- or whatever -- put line 1 of tDelims into lineDivider -- put line 2 of tDelims into itemDivider -- etc. -- by Peter M. Brigham, pmb...@gmail.com — freeware if pText = empty then return "Error: no text specified." if nbr = empty then put 1 into nbr -- default 1 delimiter put "2,3,4,5,6,7,8,16,17,18,19,20,21,22,23,24,25,26" into baseList -- low ASCII values, excluding CR, LF, tab, etc. put the number of items of baseList into maxNbr if nbr > maxNbr then return "Error: max" && maxNbr && "delimiters." repeat with tCount = 1 to nbr put true into failed repeat with i = 1 to the number of items of baseList put item i of baseList into testNbr put numtochar(testNbr) into testChar if testChar is not in pText then -- found one, store and get next delim put false into failed put testChar into line tCount of delimList exit repeat end if end repeat if failed then if tCount = 0 then return "Error: cannot get any delimiters." else if tCount = 1 then return "Error: can only get one delimiter." else return "Error: can only get" && tCount && "delimiters." end if end if delete item i of baseList end repeat return delimList end getDelimiters On Aug 8, 2015, at 8:23 AM, David Bovill wrote: > Given the long id of a control - how do I extract the reference to the > stack ti belongs to? I have a function that i have used since the dawn of > time for this - but I recall seeing a new chunk / target / reference > feature of Livecode in the last year that makes this easier. Did I imagine > it? > _______________________________________________ > 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