You still seem to be expecting a nice human readable string when what you are being passed is a binary data structure. The docs for the COM server say it returns an ArrayList (a .Net/C# data type of some sort) but this has to be translated to something that can be sent through the COM interface, which must remain language agnostic. The QAxBase docs imply this structure is a SAFEARRAY(BYTE). I'd hazard a guess it's a single dimensional array of VT_VARIANT entries.
In your C++ Qt application you receive a QByteArray. Use QByteArray::toHex() to dump the first 24 or 32 bytes. Then sit and try to marry the bytes to the SAFEARRAY structures described here;
http://msdn.microsoft.com/en-us/library/aa913233.aspx
typedef struct FARSTRUCT tagSAFEARRAY {
unsigned short cDims; // two bytes
unsigned short fFeatures; // two bytes
unsigned short cbElements; //two bytes
unsigned short cLocks; // two bytes
unsigned long handle; // four bytes
void HUGEP* pvData; // four bytes
SAFEARRAYBOUND rgsabound[1]; // structure below repeated if more than one dimension in array
} SAFEARRAY;
typedef struct tagSAFEARRAYBOUND {
unsigned long cElements; // four bytes
long lLbound; // four bytes
} SAFEARRAYBOUND;
typedef struct FARSTRUCT tagSAFEARRAY {
unsigned short cDims; // two bytes
unsigned short fFeatures; // two bytes
unsigned short cbElements; //two bytes
unsigned short cLocks; // two bytes
unsigned long handle; // four bytes
void HUGEP* pvData; // four bytes
SAFEARRAYBOUND rgsabound[1]; // structure below repeated if more than one dimension in array
} SAFEARRAY;
typedef struct tagSAFEARRAYBOUND {
unsigned long cElements; // four bytes
long lLbound; // four bytes
} SAFEARRAYBOUND;
To copy to clipboard, switch view to plain text mode
Does the number of dimensions make sense? Do the array bounds make sense? If so, read here:
http://msdn.microsoft.com/en-us/library/ms221145.aspx
You might want to use your favourite search engine to look for a C++ wrapper for SAFEARRAYs.
Bookmarks