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.
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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";} };
Merci de votre aide.
Partager