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++Builder Discussion :

Tstringgrid sauvegardé dans fichier texte


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut Tstringgrid sauvegardé dans fichier texte
    bonjour,

    j aimerais sauvegarder ma TStringgrid en format texte.

    voici ce que j ai fait :

    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
     
    void __fastcall TFrmStat::Sauver1Click(TObject *Sender)
    {
     //demander le nom de fichier de sortie
     if (this->saveDlgFichier->Execute() == true)
      {
         AnsiString NomSave;
     //demander le nom de fichier de sortie
     
       NomSave=this->saveDlgFichier->FileName;
       TStringList *StrGrd=new TStringList();
          for (int i=1;i<stgDonnees->ColCount;i++)
            {
               for (int j=0;j<stgDonnees->RowCount;j++)
               {
                    StrGrd->Add(stgDonnees->Cells[i][j]);
                    StrGrd->SaveToFile(NomSave);
               }
            }
          delete StrGrd;
      }
    }
    ceci a pour conséquence que mon fichier a une unique colonne avec toutes les données.

    connaitriez vous moyen de mettre plusieurs colonnes dans ce fichier texte?

    merci et bonne journée

  2. #2
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Je te propose l'option suivante:

    1- parcours des lignes
    2- pour chaque ligne, tu parcours les colonnes et tu ajoutes les données à un AnsiString séparées par une tabulation
    3- Ajout de cet AnsiString à ton TStringList
    4- Sauvegarde du fichier.
    + + +

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    tres bonne idée mais comment je fais pour y séparer d'une tabulation?

  4. #4
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Citation Envoyé par kykyn
    tres bonne idée mais comment je fais pour y séparer d'une tabulation?
    Tu rajoutes le caractère \t
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString Texte = "toto" + "\t" + "tata";
    donnera
    toto[tab]tata
    + + +

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    merci je teste tout ça

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    je suis presque au bout...
    voila ce que j ai

    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 __fastcall TFrmStat::Sauver1Click(TObject *Sender)
    {
     //demander le nom de fichier de sortie
     if (this->saveDlgFichier->Execute() == true)
      {
      AnsiString NomSave;
      AnsiString Texte;
     //demander le nom de fichier de sortie
     
       NomSave=this->saveDlgFichier->FileName;
       TStringList *StrGrd=new TStringList();
          for (int i=0;i<stgDonnees->RowCount;i++)
            {
               for (int j=1;j<stgDonnees->ColCount;j++)
               {
                    Texte = Texte+ "/t"+ stgDonnees->Cells[j][i];
               }
               StrGrd->Add(Texte);
               StrGrd->SaveToFile(NomSave);
               Texte == "";
            }
          delete StrGrd;
      }
    }
    en gros j ai un souci de remise a 0 de mon ansistring et en plus dans mon bloc note ça ne marque pas de tabulation mais /t...
    voila si t as une idée merci

  7. #7
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Voici le code que je ferrais (basé sur le tien)
    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 __fastcall TFrmStat::Sauver1Click(TObject *Sender)
    {
     //demander le nom de fichier de sortie
     if (this->saveDlgFichier->Execute() == true)
     {
      AnsiString NomSave;
      //demander le nom de fichier de sortie
      NomSave = this->saveDlgFichier->FileName;
      StringList *StrGrd = new TStringList();
      for (int i=0;i<stgDonnees->RowCount;i++)
      {
       AnsiString Texte;
       for (int j=1;j<stgDonnees->ColCount;j++)
       {
        if (j > 1)
             Texte += "\t";
        Texte += stgDonnees->Cells[j][i];
       }
       StrGrd->Add(Texte);
      }
      StrGrd->SaveToFile(NomSave);
      delete StrGrd;
     }
    }
    sinon, j'ai fait ce code pour un de mes programmes
    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
     
    bool ExportGrille(TStringGrid* Grille,TForm* Fiche,AnsiString Total)
    {
     int retour = true;
     TSaveDialog* Sauvegarde = new TSaveDialog(Fiche);
     Sauvegarde->Title = "Export du tableau";
     Sauvegarde->DefaultExt = "txt";
     Sauvegarde->Options << ofOverwritePrompt << ofHideReadOnly << ofNoChangeDir << ofNoReadOnlyReturn << ofDontAddToRecent;
     Sauvegarde->Filter = "Fichier texte (*.txt)|*.txt";
     
     if (!Sauvegarde->Execute())
            retour = false;
     else
     {
      TStringList* Export = new TStringList;
      Export->Clear();
      for (int ligne = 0;ligne < Grille->RowCount;ligne++)
      {
       AnsiString Ajout;
       for (int colonne = 0;colonne < Grille->ColCount;colonne++)
       {
        if (colonne > 0)
            Ajout += "\t";
        Ajout += Grille->Cells[colonne][ligne];
       }
       Export->Add(Ajout);
      }
      if ((Total != NULL) || (Total != ""))
      {
       Export->Add("");
       AnsiString valeur = "Total\t" + Total;
       Export->Add(valeur);
      }
      Export->SaveToFile(Sauvegarde->FileName);
      delete Export;
     }
     
     delete Sauvegarde;
     return retour;
    }
    + + +

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    eh ben je te remercie c est nickel!!!!

    j ai enfin fini ce projet il me reste plus qu a faire disparaitre la fenetre lorsque je clique sur "enregistrer"

    merci!

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    j arrive pas a comprendre pourquoi lorsque je clique sur enregistrer ça ne ferme pas la fenetre de commande d enregistrement..

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    avec ce code :

    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 __fastcall TFrmStat::Sauver1Click(TObject *Sender) 
    { 
     //demander le nom de fichier de sortie 
     if (this->saveDlgFichier->Execute() == true) 
     { 
      AnsiString NomSave; 
      //demander le nom de fichier de sortie 
      NomSave = this->saveDlgFichier->FileName; 
      StringList *StrGrd = new TStringList(); 
      for (int i=0;i<stgDonnees->RowCount;i++) 
      { 
       AnsiString Texte; 
       for (int j=1;j<stgDonnees->ColCount;j++) 
       { 
        if (j > 1) 
             Texte += "\t"; 
        Texte += stgDonnees->Cells[j][i]; 
       } 
       StrGrd->Add(Texte); 
      } 
      StrGrd->SaveToFile(NomSave); 
      delete StrGrd; 
     } 
    }
    ma boite de dialogue de sauvegarde ne se ferme pas lorsque je sauvegarde..

    est ce que quelqu un saurait car j ai essayé de faire un peu comme bakaneko mais bon je me suis un peu raté je crois...

    merci!

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello

    C'est TFrmStat ta boite de dialogue de sauvegarde ??

    Si tu l'as affichée avec un ->Show(), rajoute Close(); après ton delete StrGrd;
    Si tu l'as affichée avec un ->ShowModal(), mets un ModalResult = <une des contantes mrXXX> à la place du Close()

    A++

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Non ma boite de dialogue c est saveDlgFichier qui est une TSaveDialog et normalement lorsque je clique sur "enregistrer" elle devrait se fermer mais je ne comprends pas pourquoi elle ne le fait pas

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. [Débutant] sauvegarder dans fichier texte
    Par hakimetudiant dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/05/2015, 09h33
  3. Réponses: 13
    Dernier message: 23/09/2011, 18h24
  4. [ Vector Fichier ] Vector dans fichier texte
    Par geegee dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2004, 13h56
  5. Insertion dans fichier texte + rapide que TStringList ?
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/02/2004, 11h34

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