From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



在LabVIEW面向对象编程中改变类名



主要软件:
主要软件版本: 8.2
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Full Development System, LabVIEW Development Systems>>LabVIEW Professional Development System

问题: 我重命名了一个父类,但是在子类中丢失了数据,为什么会发生这样的事情?

解答:

你可能碰到了LabVIEW子类中的数据被还原为对象的缺省值的问题。这个问题在当你将保存在某处的子数据类型平化后就会发生。当你编辑LabVIEW类的私有数据时,LabVIEW保存关于你编辑的信息,从而将数据从该类的早期版本还原回来,然后再将该数据再变异为该数据的最新类版本。

当你重命名这个没保存在内存中LabVIEW类名时,LabVIEW会保存私有数据,删除该类的变异记录,并且将版本号重置为1.0.0.0。该类依然正确工作,即使LabVIEW现在已认为它是一个全新的类。但是,如果你重命名一个子类已保存在内存中的父类时,LabVIEW并没有记录类的变异记录。因此,该子类就不能将它的数据从旧版本转换为最新的类版本。还原操作不再正确,所有子类控件中的操作值也重设为该对象的缺省值。如果你已经做了不保存你的修改作为缺省的改动的话,这个就可能是导致你丢失数据的问题所在。

为了能尽可能地减小当你将LabVIEW类改名时候丢失数据的机率,你需在没有子类在内存中的时候改变类名。当你以后加载子类时,它们因为无法找到父类而显示的是断开的。为了纠正这个问题,修改继承到你新命名的类。LabVIEW除了父类的数据部分外都将数据进行了预留。LabVIEW将该部分数据还原为该对象的缺省值,但是也保留了早先父类和子类自己的所有数据。

如果想更多了解当你修改LabVIEW类名时,LabVIEW如何使用变异记录,请参考LabVIEW帮助中的开发LabvIEW类主题。



相关链接: LabVIEW Help: Developing LabVIEW Classes

附件:





报告日期: 07/11/2006
最近更新: 09/23/2007
文档编号: 3ZACTTKP