Bonjour,
j'ai besoin de passer à un ActiveX un VARIANTde type VT_ARRAY avec des données de type VT_UI1, la longueur du tableau doit être stocké dans cElement.
J'ai essayé de faire un tableau de byte, de mettre dans la première ligne le nombre de byte à passer. Et dans la suite du tableau les valeurs en byte.
Mais lorsque j'appelle la fonction, j'ai l'erreur suivante à l'exécution. Le type ne correspond pas. (Exception de HRESULT : 0x80020005 (DISP_E_TYPEMISMATCH), je pense donc à l'objet de type VT_ARRAY.
J'ai un sample en C++:
block est un objet avec quelques propriétés de type byte dont la propriété "long" ainsi qu'un tableau de byte.
VARIANT pSnV;
SAFEARRAYBOUND pDd;
pDd.cElements = (DWORD)block->long +4;
pDd.lLbound = 0;
pSnV.vt = VT_UI1 | VT_ARRAY;
pSnV.parray = ::SafeArrayCreate(VT_UI1, 1, &pDd);
if (snV.parray != NULL)
{
BYTE* pByte;
SafeArrayAccessData(pSnV.parray, (void**)&pByte);
memcpy(pByte, block, block->l +4);
SafeArrayUnaccessData(pSnV.parray);
}
Mais la je sèche depuis un bon moment :-(
Quelqu'un a une idée?
Merci d'avance
Partager