begin process at 2012 02 12 06:17:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Base de données

 > 

Autre

 > 

petite question sur _variant_t


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

petite question sur _variant_t

mardi 28 août 2007 à 18:26:07 | petite question sur _variant_t

azamharir

salut
j'ai executé une requete SELECT avec ADO dans VC6. je peux afficher le resultat grace à :
     _variant_t var;
    var = recordset->Fields->GetItem(L"ville")->GetValue();// ville c'est un attribut de ma table
     cout << static_cast<char *>(_bstr_t(var.bstrVal))<< endl;
mais, ce que je veux c'est  mettre le resultat dans un char*. comment faire?
merci et à bientot
mardi 28 août 2007 à 18:37:39 | Re : petite question sur _variant_t

juju12

Avec ta ligne  static_cast<char *>(_bstr_t(var.bstrVal)) tu récupères un pointeur qu'il faut copier car la chaîne est constante (me semble).

char* pBStr=static_cast<char *>(_bstr_t(var.bstrVal));
char pText[255 ou autre chose...];
strcpy(lpText,pBstr);

utiliser wchar_t partout si Unicode.
mardi 28 août 2007 à 18:52:34 | Re : petite question sur _variant_t

azamharir

salut
merci juju12, mais si je fait un cout de pText ou meme de pBStr j'obtiens juste des symbols bizzards. j'avais essayé ça et c'est le meme probleme.
quelqu'un peut me dire pourquoi l'affichage direct est correct alors que celui via une variable char * l'est moins?


mardi 28 août 2007 à 19:17:30 | Re : petite question sur _variant_t

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Tu peux utiliser la fonction API WideCharToMultiByte(). Elle permet de convertir proprement un BSTR en char*.
Exemple:
char buffer[200];
WideCharToMultiByte(0,0,var.bstrVal,-1,buffer,200,0,0);

mardi 28 août 2007 à 20:01:27 | Re : petite question sur _variant_t

azamharir

salut
merci racpp, ça marche nikel. si on peut le faire autrement, n'hésitez pas à le dire.
salut et @++
mercredi 29 août 2007 à 09:27:21 | Re : petite question sur _variant_t

milhandril

Réponse acceptée !
Pour un champ texte tu peux également récupérer l'information par un objet _bst_t.

_bstr_t  bst;
char* recup;

bst= recordset->Fields->GetItem(L"ville")->GetValue();

recup=bst;

Par contre en terme d'optimisation je ne sais pas ce que ca vaut.
mercredi 29 août 2007 à 18:05:16 | Re : petite question sur _variant_t

azamharir

salut
merci milhandril ça marche aussi.
et racpp, tu peux répondre à milhandril en ce qui concerne la solution la plus optimale?
merci à tous et à bientot.
mercredi 29 août 2007 à 20:02:58 | Re : petite question sur _variant_t

racpp

Administrateur CodeS-SourceS
Je pense qu'on n'a pas besoin de créer un nouvel objet _bstr_t car il existe déjà. C'est celui fourni dans le membre bstrVal du VARIANT. Il est donc préférable de récupérer juste son contenu afin de l'exploiter.
jeudi 30 août 2007 à 08:28:28 | Re : petite question sur _variant_t

milhandril

Tout a fait d'accord avec toi. La déclaraction du nouvel objet je ne l'avais fait que dans un soucis de clarté. Après le fait d'avoir besoin ou non d'une variable temporaire dépend de chaque cas. Je me posais surtout la question par rapport à l'optimisation entre l'utilisation de l'opérateur surchargé dans mon exemple et l'utilisation de WideCharToMultiByte.


Cette discussion est classée dans : question, var, resultat, variant, ville


Répondre à ce message

Sujets en rapport avec ce message

une structure dans une VARIANT [ par Ayato ] Bonjour J'ai un problème, j'aimerai passer une structure dans une variant, j'ai teste plusieurs solution (inspirer de différentes sources dispo sur l Question sur le type "Variant" [ par oberown ] J'utilise une api, où je recupere une collection d'objet de type Banane Pour récuperer l'objet il faut que j'utilise un *variant. Comment caster mon v Ré-apprendre le C [ par Fred3sa ] Bonjour à tous!Voila ca va faire un mois que j'ai quitté l'école (pas une école d'info) et je ne me souvient plus de rien (ou plus tot pas grand chose Appeler une méthode d'un objet parent appelant? [ par antoine_1977 ] Bonjour à tous,Ma question va peut-être paraitre idiotes à certains mais bon... si ils savent y répondre...J'ai une instance d'objet graphique (appelo Changer l'Ip d'une carte reseau [ par LittleJC ] Bonjour, j'aimerai avoir le code en C pour Visual C++ 6 qui permet de changer l'adresse ip de la carte réseau.Le code suivant permet de le faire en VB Petite question [ par AMokers ] Voila j'ai chercher partout sur ce site, et je ne trouve plus ou c'est que l'on peut peut modifier l'image que l'on vois dans les forums, sources dépo user breakpoint called... [ par Clonk ] Bonjour,bon, c'est une erreur spécifique à NT, mais on sait jamais, y a peut etre encore quelqu'un sous cet OS préhistorique comme moi!//J'utilise une question VC6 [ par leprov ] salut a tous. cest juste une petite question existencielle...jai lu a plusieurs endroits que VC6 est une merde avec les stl, mais alors une question m Question a propos de 'delete' en C++... [ par akboy7015 ] Serai t'il possible de detecter si un pointeur vers un objet quelconque instancié avec 'new' et déjà détruit avec 'delete' ou pas?je m'explique:pMonOb question de débutant sur hwnd [ par leprov ] salut a tous. bon une question toute bete.je voudrais a chacune de mes actions savoir si ma fenetre est ouverte, férmée, rétrécie,etc. alors la questi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales