SAFEARRAY - C++ - Programmation
Marsh Posté le 17-06-2005 à 15:21:42
hr=mBasicCsv->MaFonction(&inf);
AfxMessageBox("Lecture OK" );
long lStartBound =0;
long lEndBound = 0;
long lDimension[2];
SAFEARRAY* pSafeArray = inf.parray;
hr = SafeArrayGetLBound(pSafeArray, 1, &lStartBound);
hr = SafeArrayGetUBound(pSafeArray, 1, &lEndBound);
for(int iIndex = lStartBound; iIndex <= lEndBound; iIndex ++)
{
VARIANT NomChamp;
lDimension[1] = NbEt_InfoSV;
lDimension[0] = iIndex;
hr = SafeArrayGetElement(pSafeArray, lDimension, &NomChamp);
AfxMessageBox(CString(NomChamp.bstrVal));
VARIANT TypeD;
lDimension[1] = NbEt_InfoSV + 1;
lDimension[0] = iIndex;
hr = SafeArrayGetElement(pSafeArray, lDimension, &TypeD);
AfxMessageBox(CString(TypeD.bstrVal)); // message Box qui affiche la valeur
if (CString(TypeD.bstrVal) != 'G')
{
VARIANT Valeur;
lDimension[1] = NbEt_InfoSV + 2;
lDimension[0] = iIndex;
hr = SafeArrayGetElement(pSafeArray, lDimension, &Valeur);
AfxMessageBox(CString(Valeur.bstrVal));
}
}
NbEt_InfoSV = une constante initialisée à 5
Sachant que la premiere dimension de mon tableau est :
NbEt_InfoSV x des entiers
NbEt_InfoSV : le nom du champ
NbEt_InfoSV + 1 : le type du champ
NbEt_InfoSV + 2 : la valeur du champ
j'ai pas trop le temps de t expliquer plus mais en gros :
Tu recupere la taille des 2 dimension de ton tableau avec SafeArrayGetLBound et SafeArrayGetUBound
Et ensuite tu boucle pour récuperer les données qui vont bien
Voila, je repond pas forcement super en avance par rapport à ton post
tu a probablement trouvé la solution tout seul depuis, mais ça pourra toujours aider quelqu'un
Bonne chance
++
Billy-Bob
Marsh Posté le 17-06-2005 à 15:41:20
Oui, j'avais trouvé depuis le temps
Mais ca pourra surement aider quelqu'un.
Marsh Posté le 15-04-2005 à 14:52:33
Salut,
Je fais une appli WMI et j'aimerais récupérer les noms des différents champs qui composent une classe (comme Win32_Processor par exemple).
Et pour se faire, j'ai besoin de manipuler un SAFEARRAY dans une focntion dont voici le prototype:
Le probleme c'est que je ne sais pas si je le manipule bien se SAFEARRAY et comment récupérer les données qui sont dedans?
Voici le bout de code qui l'utilise :
Si quelqu'un pouvait m'aider ca serait super cool.
Message édité par AsTro le 15-04-2005 à 14:55:48