3

C/C++ 中Delphi 类型TVarTypeOleVariant的类似物是什么?

4

3 回答 3

4

等价于VARIANT 结构OleVariant,它被包装在 Visual C++中的_variant_t 类中。

相当于VARTYPE typedefTVarType ,从技术上讲,它是unsigned short ,但它包含VARENUM enumeration的值。

于 2012-10-29T09:41:44.280 回答
2

好吧,从他们自己的文档中可以清楚地看出——第一个只是一个无符号字——一个 uint_16。

第二个有点难以解释。它基本上是一个包含一大堆字段的大型结构。这一种数据类型包括可以传输到/从 COM 对象传输的每种数据类型的字段。这意味着您只需要关心向/从对象传递变体即可。然后由你们每个人(程序员/COM 对象)在相关位置提取/插入数据。

也许我不应该,但这是来自 oaidl.h (gcc, win32) 的 VARIANT 的定义

typedef struct tagVARIANT {
  _ANONYMOUS_UNION union {
    struct __tagVARIANT {
    VARTYPE vt;
    WORD wReserved1;
    WORD wReserved2;
    WORD wReserved3;
    _ANONYMOUS_UNION union {
        long lVal;
        LONGLONG llVal;
        unsigned char bVal;
        short iVal;
        float fltVal;
        double dblVal;
        VARIANT_BOOL  boolVal;
        SCODE scode;
        CY cyVal;
        DATE date;
        BSTR bstrVal;
        IUnknown *punkVal;
        LPDISPATCH pdispVal;
        SAFEARRAY *parray;
        unsigned char *pbVal;
        short *piVal;
        long *plVal;
        LONGLONG  * pllVal;
        float *pfltVal;
        double *pdblVal;
        VARIANT_BOOL *pboolVal;
        _VARIANT_BOOL  *pbool;
        SCODE *pscode;
        CY *pcyVal;
        DATE *pdate;
        BSTR *pbstrVal;
        IUnknown **ppunkVal;
        LPDISPATCH *ppdispVal;
        SAFEARRAY **pparray;
        struct tagVARIANT *pvarVal;
        void *byref;
        CHAR cVal;
        USHORT uiVal;
        ULONG ulVal;
        ULONGLONG ullVal;
        INT intVal;
        UINT uintVal;
        DECIMAL *pdecVal;
        CHAR  *pcVal;
        USHORT  *puiVal;
        ULONG  *pulVal;
        ULONGLONG * pullVal;
        INT  *pintVal;
        UINT  *puintVal;
        _ANONYMOUS_STRUCT struct {
            PVOID pvRecord;
            struct IRecordInfo *pRecInfo;
        } __VARIANT_NAME_4;
    } __VARIANT_NAME_3;
    } __VARIANT_NAME_2;
    DECIMAL decVal;
  } __VARIANT_NAME_1;
} VARIANT,*LPVARIANT;
于 2012-10-29T07:48:37.873 回答
0

如果您专门使用 C++Builder,它有自己的类型TVarTypeOleVariant与那些 Delphi 类型直接相关的类型。 TVarType在 System.hpp 中声明,并OleVariant在 systvari.h 中声明,就像您链接到的文档所说的那样。

于 2012-10-29T23:16:08.093 回答