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 :

Enregistrer un char *


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut Enregistrer un char *
    Bonjour,

    J'ai réaliser une interface graphique avec la bibliothèque wxwidgets

    Les informations rentrées par l'utilisateur sont stocker dans un type wxstring puis transformer
    en char*.


    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
     
    void TMyFrame::newnoeud(wxCommandEvent& WXUNUSED(event))
    {
     
    NoeudDialog dialog(NULL,-1,"Créer Noeud",carac);
     
      if ( dialog.ShowModal() == wxID_OK )
             {
     
    	   wxString Nom ;
               wxString Conso ;
     
     
                Nom = dialog.GetValue();
                Conso = dialog.GetValue2();
     
     
             cptnoeud= cptnoeud+1 ;      
     
     
              Noeud_Nom[cptnoeud] = Nom.mb_str();
              Noeud_Consommation[cptnoeud] = Conso.mb_str();
     
     
              Noeud_Nom_save[cptnoeud]=Nom.c_str();
              Conso.ToLong(&Noeud_Consommation_save[cptnoeud]);
     
     
     
     
                Noeud1[Nbnoeud]->SetLabel("N: " + Noeud_Nom[cptnoeud]+" / "+ Noeud_Consommation[cptnoeud]);
     
     
                Nbnoeud=Nbnoeud+1;
     
     
             }
    }
    J'enregistre les données contenue dans les variables Noeud_Nom_save[cptnoeud] et
    Noeud_Consomation_save[cptnoeud]dans un fichier txt



    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
     
    void TMyFrame::OnEnregistrer(wxCommandEvent& WXUNUSED(event))
    {
     
     
         FILE* fichier=fopen("table.txt","w");
     
         int i;
     
     
        for (i=1;i<=Nbnoeud;i++)
                  {
     
         fprintf(fichier,"Noeud %d : %2d %s \n",i,Noeud_Consommation_save[i],Noeud_Nom_save[i]);
     
     
         }
     
     
     
         fclose(fichier);
     
         wxMessageBox("Programme corectement enregistrer","Enregistrement !");
     
    }
    Aucune erreur intervient lors de la compilation.

    Mais l'enregistrement ne se fait pas comme je le souhaiterais.



    Explication :

    L'utilisateur rentre à l'aide d'une boite de dialogue le nom d'un Noeud (stocker dans Noeud_Nom_save[])
    + sa consommation(stocker dans Noeud_Consommation_save[]).

    Par example :

    Paris 147
    Marseille 12
    Milan 189
    Lyon 896

    Au final toute les consommations apparaissent corectement mais
    seul le dernier nom de Noeud rentrée apparait correctement tous les autre prennent
    des chaines de caractères bizarres.



    Noeud 1 : 147 N: Lyon / 896
    Noeud 2 : 12
    Noeud 3 : 189 N: Lyon / 896
    Noeud 4 : 896 Lyon


    Remarque :

    Les noms et la consommations des noeuds sont afficher à l'écran et appaissent corectement :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Mnoeud=20;
     
    for (cpt=0;cpt<Mnoeud;cpt++)
    {
    Noeud1[cpt] = new wxStaticText(this,-1,"N: ",wxDefaultPosition,
                               wxSize(-1, 20),wxALIGN_LEFT | wxST_NO_AUTORESIZE );
    Noeud1[cpt]->SetFont(wxFont(10, wxSWISS , wxNORMAL, wxBOLD, false, "Arial"));
     
    }
    J'espère être compréhensible.

    Yvan Duranton

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pourquoi des char* et pas des wxString ou des std::string ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut
    Je ne peux pas utiliser de wxstring car les tableaux sont ensuite utilisés avec des routines en C ( demandées par le professeur ).


    voici le programme complet ci-joint

  4. #4
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 951
    Par défaut
    normalement, tu doit pouvoir exporter un wxString vers un char*, regarde du coté de la doc
    ca marchera ptet mieux dans ce sens

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut
    C'est ce que je fai lorsque je note :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Noeud_Nom_save[cptnoeud]=Nom.c_str();
    J'exporte bien un wxString en char*

    Le problème se situe à mon avis au niveau de l'enregistrement.
    Je n'arrive pas à comprendre pourquoi l'enregistrement fonctionne pour le type long et ne fonctionne pas pour le char*.

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    534
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 534
    Par défaut
    Bonsoir,

    Essayez peut-être :
    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
     
    void TMyFrame::OnEnregistrer(wxCommandEvent& WXUNUSED(event))
    {
     
         /* ouverture w+b  */
         FILE* fichier=fopen("table.txt","w+b");
     
         int i;
     
     
        for (i=1;i<=Nbnoeud;i++)
        {
     
         fprintf(fichier,"Noeud %d : %2d %s \n",
    i,Noeud_Consommation_save[i],Noeud_Nom_save[i].c_str());
         /* ou encore */         
          fprintf(fichier,"Noeud %d : %2d %s \n",
    i,Noeud_Consommation_save[i],Noeud_Nom_save[i].Text);
        }
     
     
     
         fclose(fichier);
     
         wxMessageBox("Programme corectement enregistrer","Enregistrement !");
     
    }
    Cordialement.

Discussions similaires

  1. enregistrement d'un char* dans un fichier
    Par tchernobil71 dans le forum C++
    Réponses: 9
    Dernier message: 22/04/2007, 00h18
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. [LG]Mise à jour des enregistrements d'un file of char.
    Par jpclabaux dans le forum Langage
    Réponses: 5
    Dernier message: 28/10/2004, 14h28
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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