2012-10-29 33 views
3

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

+3

对于我们这些不了解delphi的人,请您介绍一下这些类型。 –

+3

没有C/C++这样的东西 - 选择一个就可以,因为C的答案与C++的答案会有很大的不同。 – Flexo

+0

@Mark Garcia如果我知道我没有问= = – Myosotis

回答

2

那么,显然从他们自己的文档 - 第一个是简单的无符号的单词 - 一个uint_16。

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

也许我不应该,但这里是从一个OAIDL.H VARIANT的定义(GCC,win32)中

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; 
+1

感谢您的。你应该有,你做到了。 –

0

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