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

Well, arrayEncoding/decoding doesn't change anything and neither does putting 
the text into a hidden field and then putting the text of the field back into a 
variable. The debugger still sees CYParray["doxepin"] as an array, with the 
correct keys and data visible, but
   put (CYParray["doxepin"] is an array) into testDOX
still gives testDOX = false, and 
   put CYParray["doxepin"]["3A456"] into shouldBeX
gives empty, when it should be "x". The same construction for 
CYParray["fluvoxamine"] works as expected.

I'm stumped. Looks as if I'll have to try a whole different approach, which I 
can do, but I'm very troubled by not understanding at all what is going on. It 
makes no sense. I can tolerate not understanding something if I have some 
glimmerings and know that I could get to the bottom of it if I work at it, but 
I hate not having a clue at all.

-- 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

Reply via email to