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

MFC Discussion :

erreur divers avec mes variables


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut erreur divers avec mes variables
    je travail sous Win xp pro avec VisualC en MFC.

    mon projet est constituè de 2 fenetre. dans les 2ème, j'insere des valeurs et clique sur "Quitter". avan de fermer la page il effectue des calcul avec ces valeurs et les affiche sur la fenetre 1.

    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
    void CMesInfosDlg::OnCancel() 
    {
    	// TODO: Add extra cleanup here
    	int_FabArme -> TabMyBat_FabArme[5];
     
    	int N, G;
    	float D;
     
    	N = TabMyBat_FabArme[5]/2;
    	D = TabMyBat_FabArme[5]/2;
     
    	if (N == D)
    	{
    		G = (N^2)*10 + N*10 + 2;
    		m_Arme_h.Format("%d", G);
    	}
     
                    UpdateData(FALSE);
     
    	CDialog::OnCancel();
    }
    int_FabArme ==> valeur saisie dans la fenetre 2(variable int de boite de saisie)
    TabMyBat_FabArme[5] ==> Tableau a 100 emplacement déclarè dans InitDialog
    N, G, D ==> variable utilisè pour le traitement de la donnè insérè
    m_Arme_h ==> variable CString de l'affichage qui se trouve sur la fenetre 1


    pour la transformation je divise la valeur par 2 et la place dans un int et un float. en les comparant je determine si int_FabArme est paire ou impaire puis je lui effectue les tranformation et stock le resultat dans G.

    ensuite je converti G(int) en CString avec format et met le resultat dans la variable de l'afficheur et après j'actualise et ferme la fenetre 2.
    après compilation il m'affiche
    --------------------Configuration: Vendetta 3 - Win32 Debug--------------------
    Compiling...
    MesInfosDlg.cpp
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(139) : error C2227: left of '->TabMyBat_FabArme' must point to class/struct/union
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(144) : error C2109: subscript requires array or pointer type
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(145) : error C2109: subscript requires array or pointer type
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(145) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(150) : error C2065: 'm_Arme_h' : undeclared identifier
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(150) : error C2228: left of '.Format' must have class/struct/union type
    Error executing cl.exe.

    Vendetta 3.exe - 5 error(s), 1 warning(s)
    le warning c'est parceque avec N et D je risque de perdre la partie decimale a 1 moment mais c'est voulus donc pas grave mais le reste je trouve pas....

    merci de votre aide

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Tu peux donner le .h de CMesInfosDlg ? (là où tu déclares TabMyBat_FabArme, int_FabArme...)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    CMesInfosDlg.h
    #if !defined(AFX_MESINFOSDLG_H__61662874_79E2_4C52_A73C_48163D34E36C__INCLUDED_)
    #define AFX_MESINFOSDLG_H__61662874_79E2_4C52_A73C_48163D34E36C__INCLUDED_

    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    // MesInfosDlg.h : header file
    //

    /////////////////////////////////////////////////////////////////////////////
    // CMesInfosDlg dialog

    class CMesInfosDlg : public CDialog
    {
    // Construction
    public:
    CMesInfosDlg(CWnd* pParent = NULL); // standard constructor

    // Dialog Data
    //{{AFX_DATA(CMesInfosDlg)
    enum { IDD = IDD_MES_INFOS };
    int int_PlanifMission;
    int int_PlanifRoute;
    int int_Racket;
    int int_Gestion;
    int int_Contrebande;
    int int_FournitureInfo;
    int int_SurvObjet;
    int int_ProtecGroupe;
    int int_ArmeBlanche;
    int int_Tir;
    int int_ConstrucBombe;
    int int_FormGuer;
    int int_Psy;
    int int_FormChim;
    int int_Honneur;
    int int_FabArme; int int_FabMuni;
    int int_Bureau;
    int int_SalleEntrainement;
    int int_Brasserie;
    int int_Bar;
    int int_BatContrebande;
    int int_DepArme;
    int int_DepMuni;
    int int_DepAlcool;
    int int_Tresorerie;
    int int_CampEntrainement;
    int int_ProtectObjet;
    int int_TirAuto;
    int int_Mine;
    int int_Casseur;
    int int_Videur;
    int int_Bandit;
    int int_Hero;
    int int_Occup;
    int int_Espion;
    int int_Emballeur;
    int int_CIA;
    int int_FBI;
    int int_Transporteur;
    int int_Debloqueur;
    int int_Elite;
    int int_Pro;
    int int_Ninja;
    int int_Bombe;
    int int_Mercenaire;
    CString m_testt;
    int int_CorpACorp;
    //}}AFX_DATA


    // Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CMesInfosDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
    //}}AFX_VIRTUAL

    // Implementation
    protected:

    // Generated message map functions
    //{{AFX_MSG(CMesInfosDlg)
    virtual void OnCancel();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
    };

    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

    #endif // !defined(AFX_MESINFOSDLG_H__61662874_79E2_4C52_A73C_48163D34E36C__INCLUDED_)
    PS: la declaration de TabMyBat_FabArme se fait dans le cpp de la fenetre1, je l'ai placer dans la fonction "OnInitDialog()"
    int TabMyBat_FabArme[100];

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Bonjour

    Je ne comprend pas ton erreur mais deux choses me gene

    A quoi sert le testpuisque qu'sur la ligne du dessus N et D ont le meme traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    N = TabMyBat_FabArme[5]/2; 
       D = TabMyBat_FabArme[5]/2;
    La deuxieme chose est que tu divise par 2 une variable entiere N et s'il elle n'est pas un multiple de 2 tu risque d'avoir un problème

    Essaye d'expliquer qu'elle est ton erreur et ce que tu veux faire

    cordialement

  5. #5
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    euh moi je vois pleins de pbs que je ne comprends pas :

    ------------------------------------------------------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int_FabArme -> TabMyBat_FabArme[5];
    ensuite si tu veux affeter TabMyBat_FabArme(5) à c int_FabArme cc'est ca qu'il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int_FabArme = TabMyBat_FabArme[5]
    en revanche si tu veux mettre int_FabArme dans chaque case du tableau TabMyBat_FabArme il faut passer par une boucle
    -------------------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    G = (N^2)*10 + N*10 + 2;
    N^2 correspond à N puissance 2, il faut tu passe par la fonc pow (regarde la msdn pour ca

    voila

    bon courage

    hiko-seijuro

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par hiko-seijuro
    euh moi je vois pleins de pbs que je ne comprends pas :

    l'accès à un élément d'un tableau c'est ca

    et non ca

    euh ... t'es sur ?

  7. #7
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    nico >>> flute j'ai rien dit (je faisais du VHDL en meme temps:d) j'edite mon poste

    merci et dsl

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    le N est 1 int et D est 1 float donc si la variable divisè par 2 est impaire N étant 1 int n'oras pas se qu'il y a derriere la virgule donc N seras diferent de D.
    si la variable est pair alor N = D

    j'ai effectuè les changement voila se que sa donne
    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
     
    void CMesInfosDlg::OnCancel() 
    {
    	// TODO: Add extra cleanup here
    	TabMyBat_FabArme[5] = int_FabArme; 
     
       int N, G; 
       float D; 
     
       N = TabMyBat_FabArme[5]/2; 
       D = TabMyBat_FabArme[5]/2; 
     
       if (N == D) 
       { 
          G = pow(N,2)*10 + N*10 + 2; 
          m_Arme_h.Format("%d", G); 
       } 
     
    	CDialog::OnCancel();
    }
    et maintenant il me met comme erreur:
    --------------------Configuration: Vendetta 3 - Win32 Debug--------------------
    Compiling...
    MesInfosDlg.cpp
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(141) : error C2065: 'TabMyBat_FabArme' : undeclared identifier
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(141) : error C2109: subscript requires array or pointer type
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(141) : error C2106: '=' : left operand must be l-value
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(146) : error C2109: subscript requires array or pointer type
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(147) : error C2109: subscript requires array or pointer type
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(147) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(151) : error C2065: 'pow' : undeclared identifier
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(152) : error C2065: 'm_Arme_h' : undeclared identifier
    D:\Programmes\VisualStudio\MSDev98\MyProjects\Vendetta 3\MesInfosDlg.cpp(152) : error C2228: left of '.Format' must have class/struct/union type
    Error executing cl.exe.
    Creating browse info file...

    Vendetta 3.exe - 8 error(s), 1 warning(s)

  9. #9
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    verifie tes includes : je penses que tu n'as pas inclus les fichiers de telle manière a ce que les variables soient vus dans ce fichier

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    je vois se que tu veut dir par include mais peut tu présisè se que tu veut que je fasse??? je comprend pas trop

  11. #11
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    rajoute ca au debut de ton fichier pour la fonction pow

    ouy est ce qu'est déclaré m_Arme_h (fichier et classe ?)

    meme question pour le tableau

    Si ils sont déclarés dans une classe il faut que tu passe en paramètre de cette nouvelle classe ces variables la (en tant que pointeurs c mieux)

    je sais pas si tu me comprendzs :s

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    j'ai corrigè l'include manquant pour la fonction pow mais au niveau des pointeur je sais pas du tout comment on fait

    c'est pour transférèt une varible d'une fentre/fonction a une autre si j'ai bien compris???

    mais moi enfait se calcule avec cette variable va se fair avec environ 30 autre variable et 30 autre tableaux de valeur a enregistrè.

    va faloir fair une liste de toutes les variable/tableaux et tranferet la liste en pointeurs??


    voila mon projet complet pour vous aider:
    http://membres.lycos.fr/theblackreverand/Vendetta%203.rar


    merci

Discussions similaires

  1. Erreur 500 avec mes .htaccess .htpasswd
    Par marvin.1 dans le forum Debian
    Réponses: 0
    Dernier message: 01/03/2015, 09h18
  2. Un souci avec mes variables
    Par arobaskette dans le forum Android
    Réponses: 5
    Dernier message: 23/11/2013, 14h19
  3. [MySQL] Problème avec mes variables de session
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/04/2011, 22h40
  4. Unload UserForm incompatible avec mes variables publiques ? Non !
    Par Jabveneau dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 03/03/2009, 14h16
  5. VB.NET Problème avec mes variables
    Par forsay1 dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/10/2008, 20h52

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