Tester le type d'une valeur??? [Résolu]

freepouy18 49 Messages postés mercredi 20 avril 2005Date d'inscription 15 septembre 2005 Dernière intervention - 15 sept. 2005 à 15:21 - Dernière réponse : phantom_2005 184 Messages postés mercredi 8 décembre 2004Date d'inscription 1 septembre 2010 Dernière intervention
- 23 janv. 2007 à 11:04
Salut a tous,

Voila mon probleme :
Je travail sur une feuille excel dont je récupère certaines valeur que je stock une à une dans un COleVariant. Le probleme c'est que j'aimerai savoir comment tester le type de cette valeur (string, int,float.....) pour pouvoir la stocker dans le tablo qui convient (string tab_str[] , int tab_int[] , float tab_float[] ou .....).

Merci, bonne journée.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 15 sept. 2005 à 16:25
3
Merci
VARIANT possède un champ 'vt' qui est l'indicateur de ce qu'englobe le variant.

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de BruNews
freepouy18 49 Messages postés mercredi 20 avril 2005Date d'inscription 15 septembre 2005 Dernière intervention - 15 sept. 2005 à 16:33
0
Merci
Merci BruNews, en chechant une peu, j'ai trouvé.
Commenter la réponse de freepouy18
phantom_2005 184 Messages postés mercredi 8 décembre 2004Date d'inscription 1 septembre 2010 Dernière intervention - 22 janv. 2007 à 10:39
0
Merci
Bonjour,

j'ai un peu le meme type de probleme!

voici mon code:

-----------------------------------------------------------------------------
 if(!objApp.CreateDispatch("Excel.Application"))
 {
  AfxMessageBox("Couldn't start Excel.");
 }else
 {
  objApp.SetVisible(true);
  objBooks = objApp.GetWorkbooks();
  objBook = objBooks.Open(PATH_FILE_EXCEL,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional,
   VOptional);
  objSheets = objBook.GetWorksheets();
  objSheet = objSheets.GetItem(COleVariant((short)1)); //=Feuil1


  m_cEdit.GetWindowText(tmp);
  range = objSheet.GetRange(COleVariant(tmp),VOptional);
  range.Select();


  x.vt = VT_BSTR;
  x = range.GetValue(VOptional);
  tmp.Format("%s",x.bstrVal);
  m_cEdit.SetWindowText(tmp);
-----------------------------------------------------------------------------

Le probleme est que je ne recupere que le premier caractere de la chaine!
Je voudrais avoir toute la chaine

Merci pour votre aide!



--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 janv. 2007 à 10:50
0
Merci
Vérifie que tu n'aies pas un prob UNICODE <=> ANSI dans
tmp.Format("%s",x.bstrVal);
x.bstrVal ne serait-il pas UNICODE ?

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
phantom_2005 184 Messages postés mercredi 8 décembre 2004Date d'inscription 1 septembre 2010 Dernière intervention - 22 janv. 2007 à 10:56
0
Merci
En effet BruNews le x.bstrVal est defini en UNICODE.

D'ou mon probleme, mais comment recuperer la chaine entiere retournée dans le VARIANT x?

--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 janv. 2007 à 11:12
0
Merci
Teste si ton _bstr_t x n'a pas un opérateur char*
tmp.Format("%s", (char*) x.bstrVal);

pas trop le temps d'aller plus loin, j'ai du taf.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 janv. 2007 à 11:14
0
Merci
ou en plus long:

tmp.Format("%s", (char*) (_bstr_t) x);

ou truc de ce genre.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
phantom_2005 184 Messages postés mercredi 8 décembre 2004Date d'inscription 1 septembre 2010 Dernière intervention - 22 janv. 2007 à 11:24
0
Merci
J'ai toujours que le premier caractere de ma chaine
Merci de ton aide

@+
--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005
phantom_2005 184 Messages postés mercredi 8 décembre 2004Date d'inscription 1 septembre 2010 Dernière intervention - 23 janv. 2007 à 11:04
0
Merci
Bonjour,

c'est bon, j'ai trouvé!
   
   //Recuperer la valeur dans un char (UNICODE --> ANSI)
   char buf[512]; 
   wcstombs(buf,x.bstrVal,512);

Merci
@+

--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.