03-10-2011 02:28 PM
This is humbling, but I just discovered something which I find un-intuitive: if I initialize the Strings[] property of a Text Ring control using an empty String array, the ring control resulting from this operation has a Strings[] array size of 1 and its unique element is a string of length 0...
See attached snippet:
(interestingly BTW, my diagram does not use a Ring Refnum and a generic Property Node, but instead directly the Ring's Property Node, but that has been changed upon generating the snippet)
I see that when opening the property dialog for the Text Ring, I cannot remove the last item, whose name is empty, so that's consistent with the above behavior, but I would expect that an empty String array remains an empty string array.
Comments most welcome.
Solved! Go to Solution.
03-10-2011 02:54 PM
Use the Code Capture Tool. It is much better than the built in LabVIEW snippet maker.
The element in the array makes sense. When you drop a new ring onto the front panel, you notice it always starts with at least one item that is empty. You can't have a zero item ring. So if you try to feed it an empty array, LabVIEW takes over and turns it into a single element array of an empty string. If you go into a new string control and try to edit the items, notice you start with an element 0 and you can't delete it.
03-10-2011 03:39 PM
I don't have a problem with an empty string. I have a "problem" with a Text Ring having one element which is empty. I just don't see the logic compared to an empty Text Ring (i.e. a String Array). But that's just me, I suppose.
03-10-2011 04:05 PM
Maybe it's just semantics. You can have a text ring with a single element that is an empty string. You cannot have an empty text ring. There always has to be at least one element.
A text ring is a numeric datatype. Actually an integer datatype. There is no such thing as an empty integer. It always as to have a value. The default is zero. In a text ring you always have to have at least one element you can select. Which means it has to have at one element of a string array associated with it.
Though you could have a ring control that is a floating point data type such as a double. And you could have a data value of NaN you could call a sort of null numeric, though I don't think it is really the same principle.
03-10-2011 04:23 PM
Now HERE is something VERY interesting.
As I mentioned above, I was a bit surprised that the snippet generated from my VI used a generic Property Node rather than the Text Ring Property Node that I originally used.
I just tried the snippet, and contrary to what I was rumbling about before, the size of the Strings[] array resulting from the diagram is 0 (ZERO) not 1!!! (that's BTW what I was expecting to be the "correct" behavior)
What is going on?
If I replace the two generic property nodes back with the Text Ring Property nodes, I get back to the size = 1 I was puzzled with.
What can of worm did I just fall into?
03-10-2011 06:47 PM
Never mind, the snippet was bogus and created a reference to a non existing text ring, hence the empty String[] array...
Replacing the reference control by a reference to the Text Ring on the FP brings back the "bizarre but expected" (or is it "fine but unexpected"?) behavior.
@Ravens Fan, I think we will blame it on semantics then...
A Text Ring is a numeric, it is not a an array of strings and thus does not behave like one, although, of course, that's pretty much the only way that I can think of using it...