解决方案
该错误可能由不同原因引起,最有可能的原因是变体至数据转换函数的类型输入端子和要变体输入端子内容的数据类型不匹配。此外,若使用共享变量存储含有映射表数据类型的变体并使用此函数时,也会发生该错误。
将变体数据转为不正确的数据类型
- 如果您尝试使用变体至数据转换函数来提取跟您输入的数据类型不对应的数据,即有可能会出现此错误。如下图的例子:它尝试从变体数据中提取布尔值。
虽然变体数据中含有一个布尔值,但它实际是簇的组成部分。因此正确的做法是:先将变体转换为簇,再从簇中提取布尔值。如下图所示:
- 不要将获取类型信息VI的类型输出接线端连接到变体至数据转换函数的类型输入接线端,以尝试自动检测变体转换到的数据类型,这很可能会引起91错误,因为获取类型信息VI的类型输出端子是枚举数据类型。例如,下图所示的代码预计就会产生91错误,因为变体中的数据是布尔,但变体至数据转换函数的类型接入的却是枚举数据类型:
使用共享变量来存储映射表
第二个可能得原因:如果原始变体数据包含映射表数据,这个变体数据被存储在共享变量中,当从共享变量中读出变体并传递给变体至数据转换函数以尝试从变体中提取映射表数据时,将会出现此错误。因为共享变量目前是无法存储映射表这种数据类型的。即便共享变量可以存储变体这种数据类型,但变体中的实质数据类型仍是映射,仍会收到制约。要解决这个问题,您可以使用不同的数据结构(如数组或簇)来储存映射表,或是从映射表中先读出所有的键和值,传入共享变量中,待所有数据从共享变量取出后,再用相应数据来重新创建映射表。