When I want to determine whether or not an array element contains non-whitespace, I usually say:

    if word 1 of tDataA["item"] is empty then ... (or is NOT empty)

Just another option.

Phil Davis



On 3/8/21 5:36 PM, Bob Sneidar via use-livecode wrote:
Are you testing for empty, or are you testing if there is a value in an array 
variable? If there is no key matching your array variable, LC will return an 
empty string. An empty string is a value.

Mark is using a different method, seeing if a key of an array is itself an array. If bobtest ["value"] contains another 
array so that bobtest ["value"] ["anumber"] contains 1, then bobtest ["value"] is an array. If 
bobtest ["value"] contains 1 then it is not an array.

But getting the value of bobtest ["value"] ["number"] will return empty whether or 
not bobtest '{value"] is an array. This is why Mark is testing for an array rather than the value.

It seems a bit wonky, you might think, "Why not return an error?" But trust me, 
when you work with arrays, especially when it comes to datagrid data, this is the best 
course.

Bob S


On Mar 8, 2021, at 16:25 , HENRY LOWE via use-livecode 
<use-livecode@lists.runrev.com> wrote:

Thanks Mark. There are two possible states:

tArray[“status”] holds a value and tArray[“status”][“text”] does not

or

tArray[“status”][“text”] holds a value and tArray[“status”] does not


My code is trying to do the following:

If tArray[“status”] does not hold a value then check if 
tArray[“status”][“text”] holds a value


The crux is how one reliably determines that an array member (e.g. 
tArray[“status”]) holds a value?

I would have assumed that if the array member does not hold a value then  - if 
tArray[member] is empty would always return true. However that does not appear 
to be the case if the array is multidimensional.


It appears that both tArray[“status”] is an array and tArray[“status”][“text”] 
is an array are true. Am I missing something about using this syntax?

Thanks,

Henry


On Mar 8, 2021, at 3:56 PM, Mark Wieder via use-livecode 
<use-livecode@lists.runrev.com> wrote:

On 3/8/21 3:46 PM, HENRY LOWE via use-livecode wrote:

I have often used the form 'if tArray[“key1”] is empty' to determine whether an 
array element hold a value but this breaks if tArray[“key1”][“key2”] holds a 
value.
Same here. Not that I've every liked that paradigm, just that it's been that 
way since life crawled out of the ocean.

However this should do the trick.

if tArray["status"] is an array then
put tArray["status"]["text"] into tStatus
else
put tArray["status"] into tStatus
end if

--
Mark Wieder
ahsoftw...@gmail.com

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

--
Phil Davis
503-307-4363


_______________________________________________
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