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 :

Récupérer un double dans une structure imbriquée qui ne marche pas


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut Récupérer un double dans une structure imbriquée qui ne marche pas
    Bonjour,

    Je programme uniquement en java mais pour les besoins d'une application je dois programmer un peu de C++ pour utiliser une dll.
    Ne connaissant pas vraiment le c++ et ayant passé des bonnes heures sans trouver la solution je fais appel à votre aide.

    Voici ci dessous le code qui me pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    ##########
    code C++
    ##########
     
    /*fonction d'une DLL  			_TMC_GetAngle1
    //typedef short (WINAPI *DLL_Function_TMC_GetAngle1) ( TMC_ANGLE &Angle, TMC_INCLINE_PRG eMode ); DLL_Function_TMC_GetAngle1 _TMC_GetAngle1;
    //_TMC_GetAngle1 = (DLL_Function_TMC_GetAngle1)GetProcAddress(hDLL,"?TMC_GetAngle@@YAFAAUTMC_ANGLE@@W4TMC_INCLINE_PRG@@@Z");
    */
     
     
     
     
    TMC_ANGLE Angles;
    TMC_INCLINE_PRG eMode = TMC_PLANE_INC;
    _TMC_GetAngle1(Angles, eMode);
     
     
    TMC_INCLINE Incline = Angles.Incline;
     
    double dHz = Angles.dHz;
    printf("dHz = %f \n",dHz);//Ca marche je récupère la bonne valeur
     
    double test1 = Incline.dCrossIncline;
    printf("dCrossIncline_ID = %f %f \n",&Incline.dCrossIncline, test1);
     
     
     
    ##########
    probleme
    ##########
    //Ce qui m'affiche à l'écran 
    dHz = 4.596758 
    dCrossIncline_ID = 0.000974 0.000000
     
    //dHz a la bonne valeur c'est bon
    //0.000974 est la bonne valeur, mais je ne récupére que 0.000000 ou alors des valeurs du genre  6016989526623063600000000000000000.000000 
    //J'ai fait plein d'essais avec des  .	 -> 	const	 & 	et *	 mais je ne parviens pas à récupérer cette valeur 0.000974 (seul printf me l'affiche correctement)
     
     
     
     
    ##########
    ficher .hpp
    ##########
     
    struct TMC_INCLINE
    {
        double dCrossIncline;                 
        double dLengthIncline;               
        double dAccuracyIncline;            
    };
     
    struct TMC_ANGLE
    {
        double dHz;                  
        double dV;                   
        double dAngleAccuracy;       
     
        TMC_INCLINE Incline;          
    };
     
    enum TMC_INCLINE_PRG
    {                            
        TMC_MEA_INC     = 0,     
        TMC_AUTO_INC    = 1,     
        TMC_PLANE_INC   = 2      
    };
     
     
    RC_TYPE TMC_GetAngle( TMC_ANGLE &Angle,  TMC_INCLINE_PRG eMode = TMC_AUTO_INC );

    Merci d'avance pour votre aide.
    Si vous pouvez tenter aussi une petite explication par curiosité!!
    Je suis vraiment à cours d'idées..

    Philippe

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut
    Alors je viens de trouver pourquoi, c'est une application spéciale qui a nécessité d'utiliser #pragma pack(4) dans le fichier d'entête.
    Bizarre que ça ait marché pour certaines variables de même type!!
    Je ne me serais pas posé cette question si je n'avais pas pu récupérer certaines valeurs justes.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Faut dire qu'en affichant le pointeur et non la valeur du double, effectivement y'a de fortes chances que la valeur soit incorrecte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("dCrossIncline_ID = %f %f \n", &Incline.dCrossIncline, test1);
    Donc je doute que la valeur que tu donnes soit le fruit de ce code.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2016] VBA Excel / Récupérer des mails OUTLOOK dans une boite mail qui n'est pas celle par défaut
    Par GregCompta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2018, 19h35
  2. Récupérer des controles dans une listview imbriquée
    Par ERICLEUN dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/11/2012, 18h26
  3. Réponses: 1
    Dernier message: 21/10/2011, 13h53
  4. [Débutant] Récupérer les valeurs dans une structure
    Par Kichott dans le forum MATLAB
    Réponses: 6
    Dernier message: 05/08/2009, 08h37
  5. [Système] bbcode imbriqué qui ne marche pas
    Par jexl dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2007, 12h21

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