Ring and Enum
时间:12-13
整理:3721RD
点击:
一年前我准备把自己的一些编程心得陆陆续续发上来,发了几篇,最近几个月实在太忙,就耽搁下来,现在到了2008,趁着第四届虚拟仪器大赛的东风(这种话是不是tooooold?)简单写了几个小程序,讲一讲Ring 和Enum这两类控件的区别。
Ring 和Enum是两种相貌和功能都类似的控件。用一个术语来说,两者都是named numeric controls. 诸多的类似这里不在细述,大家看帮助文件,很简单的。附件的几个程序重点是两者的不同。
第一个是Enum_String.vi, 与Ring相比,Enum最大的优点是很容易得到其数值对应的字符串,这无论对自己写程序还是别人读你的程序都很有好处。比如Enum与Case structure 相连,case selector labels就自动变成Enum各个值对应的text。相反,如果一个Ring与Case structure 相连,case selector labels都只是numbers, 字符比起数字来说当然更容易识别。还有,如果你要读写Windows的注册表,或者读写configuration files, 很多时候要用字符串,使用Enum就比较方便。
但是Enum的最大缺点是不能在run time的时候写String[] property。但是你可以用VI Server 来写这个属性。运行Enum_RunMe_first, and Enum_RunMe_second.
Enum还有一点要注意的是当你连接两个Enums的时候,两者items的个数和所有的texts 必须完全一致。所以如果你用Enum来写一个State Machine结构,你最好把这个Enum做成一个Strict Type Def. Control,然后在所有地方都调用这个control,否则的话真是牵一发而动全身,一个Enum稍微改动一点,其他所有的都要手动去修改,case多的话,改死了。
Ring则没有这样严格的限制(但是要小心,有严格的限制才不容易搞错,数字更容易出错)。Ring的有点是它的Item对应的数值可以不是顺序的整数,而Enum的数值则一定是从0到n-1的整数。
还有一个区别,如果你想显示图片的话,就只有用picture ring。
我这是抛砖引玉,大家有什么心得,欢迎交流!
Ring 和Enum是两种相貌和功能都类似的控件。用一个术语来说,两者都是named numeric controls. 诸多的类似这里不在细述,大家看帮助文件,很简单的。附件的几个程序重点是两者的不同。
第一个是Enum_String.vi, 与Ring相比,Enum最大的优点是很容易得到其数值对应的字符串,这无论对自己写程序还是别人读你的程序都很有好处。比如Enum与Case structure 相连,case selector labels就自动变成Enum各个值对应的text。相反,如果一个Ring与Case structure 相连,case selector labels都只是numbers, 字符比起数字来说当然更容易识别。还有,如果你要读写Windows的注册表,或者读写configuration files, 很多时候要用字符串,使用Enum就比较方便。
但是Enum的最大缺点是不能在run time的时候写String[] property。但是你可以用VI Server 来写这个属性。运行Enum_RunMe_first, and Enum_RunMe_second.
Enum还有一点要注意的是当你连接两个Enums的时候,两者items的个数和所有的texts 必须完全一致。所以如果你用Enum来写一个State Machine结构,你最好把这个Enum做成一个Strict Type Def. Control,然后在所有地方都调用这个control,否则的话真是牵一发而动全身,一个Enum稍微改动一点,其他所有的都要手动去修改,case多的话,改死了。
Ring则没有这样严格的限制(但是要小心,有严格的限制才不容易搞错,数字更容易出错)。Ring的有点是它的Item对应的数值可以不是顺序的整数,而Enum的数值则一定是从0到n-1的整数。
还有一个区别,如果你想显示图片的话,就只有用picture ring。
我这是抛砖引玉,大家有什么心得,欢迎交流!
不错的说
啥也不说了,雨鞋的帖子都是精华阿
赞赞
bucuo