客户机端转换
From Apache OpenOffice Wiki
UNO IDL 说明和定义的映射表明调用某个特定 UNO 函数时,需要返回什么值。但是,在值通过桥后,使用的语言可能还会应用另一个转换。
// UNO IDL float func();
// VB Dim ret As Single ret= obj.func() 'no conversion by VB Dim ret2 As String ret2= obj.func() 'VB converts float to string
函数返回时,VB 将 float
值转换成 string
,并将其指定给 ret2
。当函数返回的是一个字符,并且
希望返回字符串而不是 VB 整数值时,这样的转换就会非常有用。
// UNO IDL char func();
// VB Dim ret As String ret= obj.func()'VB converts the returned short into a string
如果使用这些转换,请注意不同的值空间。也就是说,如果接收返回值的变量的值空间小于 UNO 类型,并且该值不适合于提供的变量,就可能发生运行时错误。有关客户机端转换的信息,请参阅相应语言的文档。
客户机端转换仅适用于返回值,而不适用于 out 或 inout 参数。如果当前的桥实现没有提供默认映射中所需的类型,就无法将 out 或 inout 参数传回 Automation。
另一种转换为隐式转换。用户不会影响转换种类。例如,与 Windows Scripting Host 或 Internet Explorer 配合使用的脚本引擎将 double 值用于所有浮点值。因此,当 UNO 函数返回一个 float 值时,该值就会被转换成 double,这可能会产生一个稍微不同的值。例如:
// UNO IDL float func(); //returns 3.14
// JScript var ret= obj.func(); // implicit conversion from float to double, ret= 3.14000010490417
Content on this page is licensed under the Public Documentation License (PDL). |