转换映射

From Apache OpenOffice Wiki
Jump to: navigation, search



如上一节所示,Automation 类型在映射表中具有对应的 UNO 类型。如果一个 UNO 函数需要某个特定类型的参数,则可以提供相应的 Automation 类型。这并不总是必需的,因为桥也接受相似的类型。例如:

 //UNO IDL
 void func( long value);
 // VB
 Dim value As Byte
 value = 2
 obj.func valLong


下表显示各种 Automation 类型,以及如果没有传送所需的 UNO IDL 类型,如何将 Automation 类型转换为 UNO IDL 类型。

Automation IDL 类型(源) UNO IDL 类型(目标)
boolean (true, false) unsigned char, short, long, float, double: 0 = false, > 0 = true

string: "true" = true, "false" = false

boolean
boolean, unsigned char, short, long, float, double, string byte
double, boolean, unsigned char, short, long, float, string double
float, boolean, unsigned char, short, string float
short, unsigned char, long, float, double, string short
long, unsigned char, long, float, double, string long
BSTR, boolean, unsigned char, short, long, float, double string
short, boolean, unsigned char, long, float, double, string (1 character long) char
long, boolean, unsigned char, short, float, double, string enum


将一个字符串用于数值时,该字符串必须包含表示该值的适当字符串。


如果将浮点值用于整数值,这些值会被四舍五入。


使用的类型如果值空间大于 UNO 类型时要谨慎。不要提供超出值空间的参数,这会导致错误。例如:

 // UNO IDL
 void func([in] byte value);


 // VB 
 Dim value as Integer
 value= 1000
 obj.func value 'causes an error


转换映射只适用于参数,即从 Automation 环境到 UNO 函数的调用期间,直到该 UNO 函数接受参数。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages