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 : 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";}
	};
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.