CreateUnoValue Function

返回一个对象,该对象表示一个涉及 Uno 类型系统的精确类型值。

该对象被传送到 Uno 时,将自动转换成一种相应的 Any 类型,此类型必须由全限定的 Uno 类型名称来指定。

批注图标

LibreOffice API 经常使用 Any 类型。它与其他环境中的 Variant 类型相对应。Any 类型具有一个任意类型的 Uno,可用于一般的 Uno 接口。


语法:

oUnoValue = CreateUnoValue( "[]byte", MyBasicValue ) ' to get a byte sequence.

如果 CreateUnoValue 无法转换成指定的 Uno 类型,将发生错误。转换时使用了 TypeConverter 服务。

此函数适用于 Basic 到 Uno 类型的默认转换机制效果不佳的场合。试图访问 LibreOffice Basic 中基于一般 Any 类型的接口,例如 XPropertySet::setPropertyValue (Name, Value ) 或 X???Container::insertBy??? (???, Value) 时,可能出现这种情况。由于这些类型仅在相应的服务中进行了定义,因此 Basic 运行时不能识别这些类型。

在这种情况下,LibreOffice Basic 将为要转换的 Basic 类型选择最匹配的类型。但是如果选择了错误的类型,就会发生错误。您可以使用 CreateUnoValue() 函数为未知的 Uno 类型创建一个值。

此外,还可以使用此函数来传送非 Any 值,但是建议您不要这样做。如果 Basic 知道目标类型,使用 CreateUnoValue() 函数只会导致额外的转换操作,从而降低 Basic 的执行速度。