As shown in the previous section, Automation types have a UNO counterpart according to the mapping tables. If a UNO function expects a particular type as an argument, then supply the corresponding Automation type. This is not always necessary as the bridge also accepts similar types. For example:
//UNO IDL void func( long value);
' VB Dim value As Byte value = 2 obj.func valLong
The following table shows the various Automation types, and how they are converted to UNO IDL types if the expected UNO IDL type has not been passed.
|Automation IDL Types (source)||UNO IDL Types (target)|
|boolean (true, false) unsigned char, short, long, float, double: 0 = false, > 0 = true
string: "true" = true, "false" = false
|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|
When you use a string for a numeric value, it must contain an appropriate string representation of that value.
Floating point values are rounded if they are used for integer values.
Be careful using types that have a greater value space than the UNO type. Do not provide an argument that exceeds the value space which would result in an error. For example:
// UNO IDL void func([in] byte value);
' VB Dim value as Integer value= 1000 obj.func value 'causes an error
The conversion mappings only work with in parameters, that is, during calls from an Automation environment to a UNO function, as far as the UNO function takes in parameters.
|Content on this page is licensed under the Public Documentation License (PDL).|