2012-10-29 47 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,就像鏈接到的文檔所述。