From a recent message by Emmanuel Beuque:
So has anyone been able to say in which case a <void> value could evaluate as TRUE ? At the beginning, Kerry suggested it was a Windows only thing but I today encountered this on a Mac.
In my case, the value was the result of a sendAllSprites() call with D8.5.0 authoring on MacOS9. I think Kerry was also using a call to a list of instances or something similar.
-- this was done in a MIAW closeWindow handler BTW
tResult = sendAllSprites(#event)
if tResult then
put tResult, "is TRUE"
else
put tResult, "is FALSE"
end if
only one sprite had a behavior with this handler and it might return TRUE or exit (could "exit" be considered the same as return(VOID) ?)
and I get in the message window :
-- <void> "is TRUE"
If I simply add one line :
tResult = sendAllSprites(#event)
if voidP(tResult) then tResult = VOID
if tResult then
put tResult, "is TRUE"
else
put tResult, "is FALSE"
end if
then I get :
-- <void> "is FALSE"
Notice how I had reset tResult to VOID, not to FALSE, if voidP(tResult).
So there must be 2 kind of <void> values in Lingo, some might be considered as TRUE, most are considered as FALSE.
Is this a bug? Is this a feature? Has you found this in your Lingo code?
To determine what is really happenning behind the scene, I have crafted a little (worthless) Xtra that will help you determine what is the real value of your variables, and to test whether your <void> is false in the true sense or true (in a false sense).