Because various languages handle data types in different ways, the SocketTools components have been designed to use variants. A variant is a special data type which can be used to represent multiple types of data, including integer, string, date and currency values. All of the SocketTools methods and events use variant types and the developer is responsible for converting those variants into the required data type. For example, in Visual C++, this can be accomplished using the CComVariant class.
In addition to variant types, the controls also use numeric data types for many property values. The following is a list of numeric data types that are used, along with their C and Visual Basic equivalents.
One problem that is frequently encountered when converting function definitions from C or C++ to other languages is the size of the integer data type. For example, default integer size for Visual Basic 6 is 16-bits on 32-bit platforms. However, in Visual Basic.NET, as well as languages like Visual C++, the default integer size is 32-bits. Also, some languages do not support unsigned integer types. In this case, as with Visual Basic, the signed type should be used instead.
Boolean parameters present a special problem for two reasons. Firstly, the data types used to represent boolean values frequently vary between languages. Secondly, different languages represent the values "true" and "false" differently. In languages like Visual C++, boolean parameters should always be passed as 32-bit signed integers.
String arguments can also present a problem when calling methods from languages such as Visual C++. All strings, regardless of whether they are assigned to property values or to be passed as arguments, must be specified as BSTRs. A BSTR is essentially a null-terminated Unicode string with the length of the string prepended to it. Each character in the BSTR is represented as a 16-bit value. With languages such as Visual Basic, strings are handled transparently. However, in C++ it is required that those strings be allocated and managed by the application. It is recommended that you use classes like CComBSTR to represent your string values.
If you are unsure of how your language handles BSTRs, we recommend that you review the language's technical reference for information on how to assign string values to the property of a COM object, or when calling a method. If your language supports COM interfaces, it will typically either handle BSTR strings transparently or provide a collection of functions which can be used to create, modify and delete them.
Copyright © 2020 Catalyst Development Corporation. All rights reserved.