Thanks for explaining that gotcha in detail. I've had a few problems before when I relied on the 99% awesome debugger and variable watcher only to find out that it wasn't showing me the many characters that exist, and affect code, but are technically invisible.
On Sat, Sep 24, 2016 at 6:26 AM, Kay C Lan <lan.kc.macm...@gmail.com> wrote: > On Fri, Sep 23, 2016 at 2:27 AM, Peter TB Brett > <peter.br...@livecode.com> wrote: > > > > "" isn't "the absence of a string", it's a string that's 0 characters > long. > > Being able to use it as an array key is important for being able to > > represent real-world data in an array. > > It's an important point that "", a 0 character string is not the same > as NULL because we as humans often 'see them' as the same. > Unfortunately one of the great features of LC, the fact it's typeless > and it auto converts integers/strings/dates back and forward as we > need them, also means that occasionally it makes the same mistake we > make: > > In the msg box - 8 lines all ending with msg: > > put "empty = " & quote & quote & " is " & (empty = "") into msg > put cr & "empty = NULL is " & (empty = NULL) after msg > put cr & "navtiveCharToNum(empty) = " & nativeCharToNum(empty) after msg > put cr & "natvieCharToNum(" & quote & quote & ") = " & > nativeCharToNum("") after msg > put cr & "nativeCharToNum(NULL) = " & nativeCharToNum(NULL) after msg > put cr & "Therefore:" after msg > put cr & "navtiveCharToNum(empty) = nativeCharToNum(NULL) is " & > (nativeCharToNum(empty) = nativeCharToNum(NULL)) after msg > put cr & "So although an empty string is NOT the same as the NULL > character, in some cases LC treats them the same" after msg > > or to put it another way, "" and empty do not roundtrip > > In the msg box: > > put numToNativeChar(nativeCharToNum(empty)) = empty --returns false > > When dealing with databases, tracking the difference between NULL and > empty and "" can be a real pain. Is this a feature or a bug? To me the > advantages of 'typeless' far outweigh the 0.001% of times I hit this > gotcha. > > _______________________________________________ > 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