IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Type VARIANT en C++


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Par d�faut Type VARIANT en C++
    Salut,

    Dans mon programme je dois r�cup�rer une variable de type VARIANT.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    VARIANT var;
    VariantInit(&var);
    var = T.GetDoublePhysValue();
     
    unsigned long SizeElement = var.parray->cbElements; //16
    unsigned short dimensions = var.parray->cDims; //1
    unsigned long SizeArray = var.parray->rgsabound[0].cElements; //2
    Je re�ois bien un tableau de deux variants. Malheureusement, je n'arrive pas � obtenir la valeur. J'ai beau tout essay� : var.parray->pvData, ou les SafeArray... je suis compl�tement perdu.

    D'apr�s mes recherches, comme j'obtiens var.vt = VT_ARRAY | VT_VARIANT, les valeurs se situent dans la variables : var.pvarVal....
    Mais l� aussi aucun r�sultat...


    Merci de votre aide.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    En th�orie, pvData doit pointer sur deux VARIANT l'un apr�s l'autre...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Par d�faut
    Oui j'ai regard� de ce c�t�. Comment puis je r�cup�rer les valeurs des deux Variants ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     void * data = var.parray->pvData ;

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je dirais un truc du genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //var est supposé représenter un tableau de deux VARIANT.
    assert( var.vt == VT_ARRAY | VT_VARIANT );
    assert( var.parray != NULL );
    assert( var.parray->cDims == 1 );
    assert( var.parray->rgsabound[0].cElements == 2 );
    assert( var.parray->cbElements == sizeof(VARIANT) );
     
    void * pData = var.parray->pvData;
    VARIANT * pFirst = static_cast< VARIANT * >(pData);
    VARIANT * pSecond = pFirst + 1;
    Et ensuite, tu as tes deux VARIANT. Tu dois v�rifier LEUR(s) type(s) (VT_*) et lire de la mani�re correspondante...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Par d�faut
    ok �a fonctionne, j'avais trouv� la m�me solution en �tudiant la msdn avec pvData.

    � l'inverse, il me faut sp�cifi� les valeurs des deux variants pour les renvoy�s gr�ce � une foncion : T.SetDoublePhysValue(var).

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Par d�faut
    J'ai oubli� un grand mot :
    un grand MERCI pour ton aide rapide.

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    N'oublie pas de cliquer sur

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Converion de types VARIANT
    Par jagboys dans le forum MFC
    R�ponses: 1
    Dernier message: 14/10/2006, 22h15
  2. Probl�me avec le type variant
    Par fabrice001 dans le forum C++Builder
    R�ponses: 4
    Dernier message: 21/12/2005, 10h18
  3. locate - type variant incorrect
    Par lol_adele dans le forum Bases de donn�es
    R�ponses: 8
    Dernier message: 24/10/2005, 15h54
  4. [D2005] Type Variant en .NET
    Par Harry dans le forum Delphi .NET
    R�ponses: 5
    Dernier message: 28/04/2005, 18h00
  5. Convertion de type VARIANT � type CString
    Par j_grue dans le forum MFC
    R�ponses: 2
    Dernier message: 07/11/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo