Previous IDL Connectivity Bridges: Using COM Objects in IDL Next

COM-IDL Data Type Mapping

When data moves from IDL to a COM object and back, IDL handles conversion of variable data types automatically. The data type mappings are shown in Table 3-1.

Table 3-1: IDL-COM Data Type Mapping 

Table 3-1: IDL-COM Data Type Mapping 
COM Type
IDL Type
BOOL (VT_BOOL)
Byte (true =1, false=0)
ERROR (VT_ERROR)
Long
CY (VT_CY)
Double (see note below)
DATE (VT_DATE)
Double
I1 (VT_I1)
Byte
INT (VT_INT)
Long
UINT (VT_UINT)
Unsigned Long
VT_USERDEFINED
The IDL type is passed through
VT_UI1
Byte
VT_I2
Integer
VT_UI2
Unsigned integer
VT_ERROR
Long
VT_I4
Long
VT_UI4
Unsigned Long
VT_I8
Long64
VT_UI8
Unsigned Long 64
VT_R4
Float
VT_BSTR
String
VT_R8
Double
VT_DISPATCH
IDLcomIDispatch
VT_UNKNOWN
IDLcomIDispatch

Note on the COM CY Data Type

The COM CY data type is a scaled 64-bit integer, supporting exactly four digits to the right of the decimal point. To provide an easy-to-use interface, IDL automatically scales the integer as part of the data conversion that takes place between COM and IDL, allowing the IDL user to treat the number as a double-precision floating-point value. When the value is passed back to the COM object, it will be truncated if there are more than four significant digits to the right of the decimal point.

For example, the IDL double-precision value 234.56789 would be passed to the COM object as 234.5678.

  IDL Online Help (March 06, 2007)