Remplir un safearray avec unsigned char
Bonjour,
Je cherche à envoyer des données vers un autre logiciel. Pour cela je dispose d'une DLL.
La fonction de la DLL permettant d'envoyer ces données vers un tableau du logiciel prend un safearray comme argument.
La première ligne du safearray modifie la première ligne du tableau du logiciel, La seconde ligne du safearray modifie la seconde ligne du tableau du logiciel, etc. .
Dans la doc de la DLL il est également dis que le type des données contenues dans le safearray doivent être un BYTE. Le BYTE n'existant pas en C++ j'utilise le type unsigned char.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| // Définition du type BYTE
typedef unsigned char BYTE;
// INIT UN TABLEAU D'ENTIER
int valInt[4]={0,1,2,3};
// INIT TABLEAU BYTE
BYTE vecData[32]={""};
int k=0;
for (int i = 0; i<4;i++){
for(int j = 0; j<8;j++){
// REMPLIR TABLEAU BYTE AVEC LE TABLEAU INT
vecData[k]= (BYTE)valInt[i];
k+=1;
}
}
// CREATION SAFEARRAY CONTENANT LES DATAS
SAFEARRAY *pData = SafeArrayCreateVector (VT_I8, 1,32);
// REMPLIR LE SAFEARRAY
for (int i = 0; i<32; i++){
ind[0]=i;
hr = SafeArrayPutElement(pData,ind,&vecData[i]);
if(hr == S_OK){
check="OK";}
}; |
Ensuite, j'appel la fonction de ma DLL mais ça ne fonctionne pas ... alors qu'elle me renvoi "OK". Je me dis que c'est peut être du à un mauvais typage des données ? unsigned char n'est pas un byte ? le VARIANTYPE du safearray n'est pas le bon ?
Merci de votre aide.