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++

Vue hybride

frednico56 Type VARIANT en C++ 15/05/2007, 15h42
Médinoc En théorie, pvData doit... 15/05/2007, 16h53
frednico56 Oui j'ai regardé de ce côté.... 16/05/2007, 08h37
Médinoc Je dirais un truc du genre: ... 16/05/2007, 09h09
frednico56 ok ça fonctionne, j'avais... 16/05/2007, 09h27
Message précédent Message précédent   Message suivant Message suivant
  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 394
    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 394
    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 394
    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 394
    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.

+ 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