On compile time the compiler assures that at least one case will run when the code executes, if this cannot be determined the containing VI will be Broken. To provide a case for values of the selector that is general a case can be labeled default. One case can be used to handle several selector values. To enter these provide a , (comma) between the values. A range of these values can be set by providing .. (two dots) between the values.
Editing tips and tricks
- To create a new case after the current case use <shift-enter>, to duplicate the current case to a new case use <ctrl-shift-enter>
- You can right click on the selecter and sort or switch cases
The selection decision of the case structure can be done by several datatypes:
- Error Cluster
The boolean case structure is the default state of the case structure. It has a case for the True and the False state.
The integer case structure uses the integer value of the selector data type to determine which case is executed
Non-integer numerics (floats) are rounded according to IEEE 754-1985, where a non-integer is rounded to the nearest even integer if it's rest is .5 .
An integer case structure accepts ranges to limit the number of cases. These ranges can be closed (3..10) or open (3..) where every value above 2 is executed.
- It's possible to show Hex, octal or binary values using Radix. Right-click on the number and select Radix.
Enum or Tab control
The Enum case structure uses the string interpretation of the value to label the cases.
- To have a case for every enum value right click on the selector label of the case structure and select add case for every value.
- Don't add a default case, if the enum datatype changes the code will break and you'll be triggered that a case should be added.
- A Tab-control's datatype is an enum as well, so it's possible to connect a tab control directly to a case structure.
The string case structure uses the string value to select which case should execute.
- Selection is by default done case sensitive, to make the selection case insensitive right click on the selector label and select Case insensitive match
- A default case is obliged
Just like integer and enum case structures a string case structure accepts ranges. To detect all string starting with foo the following range would apply "foo".."foo~". By adding the tilde on the end of the range you will get all strings starting with foo up to foo~. The tilde is the last visible ASCII character.
Caveats for using ranges
- The range of "UI:".."UI:Z" is not inclusive of "UI:Z". To be inclusive you need to explicitly add it like this: "UI:".."UI:Z", "UI:Z" -- see docs for details. Using tilde will not match the value with the tilde
- If you wanted to include frames like "UI: Zoom Out" (that have more characters than just UI: Z), then you'd probably want to set your range to something like "UI:".."UI:zzzzzzzzzzzzz" (Note: I used lowercase "z" on purpose -- see next point) or the tilde.
- String range matches are case sensitive (even if your case structure is configured for Case Insensitive Match, I believe), so you'd want to use a range like "UI:".."UI:zzzzzzzzzzzzzz", since "z" (0x7A) > "Z" (0x5A) -- see docs for details.