On May 3, 2012, at 3:10 PM, Ken Ray wrote: > > On May 3, 2012, at 12:47 PM, Peter M. Brigham, MD wrote: > >> I have a customprop, CYPdata, that is an array, each element of which is an >> array itself. I am scraping the data to build CYPdata from an HTML page on >> the web, and filling it via script by parsing the HTML. There is an odd bug >> that I'm trying to get to the bottom of, and something strange is happening >> when I do the following in a test button: >> >> on mouseUp >> put the CYPdata of this stack into CYParray >> put CYParray["fluvoxamine"] into aFLV >> put CYParray["doxepin"] into aDOX >> put aFLV is an array into testFLV >> put aDOX is an array into testDOX >> breakpoint >> end mouseUp >> >> In the debugger variable pane at the breakpoint, expanding the array >> CYParray shows the keys, which are a whole list of drugs (as it should be), >> and each key/drug is indeed indicated as containing an array (with the >> little gray expansion triangle at the left). If I examine >> CYParray["fluvoxamine"] by clicking the expansion triangle, it shows the >> elements of that array, as expected. Same for CYParray["doxepin"]. The >> correct data is there in both cases. However, the aDOX variable does not >> display as an array (no expansion triangle) and testDOX = false, whereas >> aFLV is indeed an array, as displayed in the debugger and confirmed by >> testFLV = true. >> >> What could be going on here? As it happens, the "doxepin" case is handled >> differently from the "fluvoxamine" case when I parse the HTML in loading the >> array, since they appear in slightly different contexts, so that must be the >> source of the difference, but how can the debugger show the "doxepin" array >> keys properly but somehow CYParray["doxepin"] not an array? Any ideas? > > Peter, instead of trying to store multidimensional arrays "raw" in the custom > property; can you use arrayEncode/arrayDecode? I think it might help > eliminate issues; so assuming you parse the HTML and you have the data in a > multidimensional array variable "CYParray", instead of doing: > > set the CYPdata of this stack to CYParray > > do > > set the CYPdata of this stack to arrayEncode(CYParray) > > … and then when you're ready to read it: > > on mouseUp > put arrayDecode(the CYPdata of this stack) into CYParray -- changed line > put CYParray["fluvoxamine"] into aFLV > put CYParray["doxepin"] into aDOX > put aFLV is an array into testFLV > put aDOX is an array into testDOX > breakpoint > end mouseUp > > Ken Ray
I'll try that. However, I'm suspecting a problem with the raw data fetched from the webpage, since after doing several filters on a section of the HTML containing "doxepin" I was left with something that looked like the correct list of meds, one to a line, but with some empty lines. When I tried to "filter tList without empty" it was left unchanged, and even doing a descending repeat loop to delete empty lines it was unchanged. I had to resort to a descending repeat loop checking if the number of words of line n of tList = 0 and deleting those. There appeared to be no tabs or detectable characters in tList (I would not expect tabs anyway in a distillation of HTMLtext). But there's something squirrely about the text I'm fetching. I'm wondering if it's related to line termination characters in some way, so I may try putting the raw text into a hidden field and then taking it out again before parsing it, to let the LC engine handle the cross-platform EOL/CR/LF complexities. But I'll try the arrayEncode/arrayDecode thing too. -- Peter Peter M. Brigham pmb...@gmail.com http://home.comcast.net/~pmbrig _______________________________________________ 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