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 :

Enregistrer le contenu de plusieurs Edit dans un fichier .txt [Débutant]


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Enregistrer le contenu de plusieurs Edit dans un fichier .txt
    Bonjour,


    Je vous expose mon problème :

    J'ai deux Edit ( Edit1 et 2), dans le premier j'y stock une chaîne de caractère type 123ab56, et dans le second un poids donc du type 4,25.

    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
    26
    27
    28
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
    #include <string.h>
     
    #include "UnitSujet.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFormSujet *FormSujet;
    //---------------------------------------------------------------------------
    __fastcall TFormSujet::TFormSujet(TComponent* Owner)
        : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TFormSujet::BitBtn1Click(TObject *Sender)
    {
        double Poids;
        String IdAnimal;
     
        IdAnimal=Edit1->Text;
        Poids=Edit2->Text.ToDouble();
     
    }
    //---------------------------------------------------------------------------
    J'ai placé un SaveDialog dans ma fiche, mais je ne sais pas du tout comment l'utiliser.

    En fait, je veux sauvegarder le IdAnimal et le poids dans un fichier .txt


    Merci d'avance

    Cordialement

    Coxycross

  2. #2
    Membre actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Points : 245
    Points
    245
    Par défaut
    (Rapidement) une solution possible :

    TMemo *notepad;
    notepad = new TMemo();

    notepad->Lines->Add(Edit1->Text);
    notepad->Lines->Add(Edit2->Text);

    notepad->SaveToFile("nom_fichier.txt");

    delete notepad;
    Pour le savedialog, il faut lancer la fonction SaveDialog1->Execute() puis récupérer le nom avec SaveDialog1->FileName

    Je n'ai pas le compilateur sous les yeux mais ça doit être ça en gros

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Concernant ton code, je n'ai pas tout compris. Parce qu'avec la méthode du notepad, l'utilisateur ne peut pas choisir le nom du fichier si ?
    Et je vois aussi un TMemo, il faut un memo sur ma fiche ?

    Encore une question, pour une concaténation de chaine !

    J'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Total = IdAnimal + Poids + Specimen
    Est-ce qu'il est possible d'ajouter un espace entre chaque chaine ? Et est-il possible d'ajouter 'kg' juste après la chaine poids ?

    NB : Je viens de régler mon problème de concaténation, mais le problème pour la sauvegarde tiens toujours

    Merci d'avance

    cdt Coxycross

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 597
    Points : 25 280
    Points
    25 280
    Par défaut
    TMemo a remplacé par TStringList
    SaveToFile prend le nom du fichier en paramètre fourni par le TSaveDialog

    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
     
    //---------------------------------------------------------------------------
    void __fastcall TFormSujet::BitBtn1Click(TObject *Sender)
    {
     
      double Poids = Edit2->Text.ToDouble();
      String IdAnimal = Edit1->Text;
      String Specimen = ?
     
      if (SaveDialog1->Execute())
      {
        TStringList *sl = new TStringList();
        try
        {
          sl->Add(String().sprintf("%s : %f kg - %s", AnimalID, Poids, Specimen));
          sl->SaveToFile(SaveDialog1->FileName);
        }
        __finally
        { 
          delete sl;
        } 
      } 
    }
    Sinon TFileStream couplé à un TStreamWriter et sa méthode WriteLine


    @coxycross, faudrait chercher un peu plus
    Delphi - Fichier et flux
    Support des entrées et des sorties des fichiers

    C++ Strict :
    C library to perform Input/Output operations
    IOStream C++ Library et fstream - Input/output file stream class

    C++ Builder Avancé :
    Utilisation des FilesMapping sous C++ Builder montre comment utilise un fichier comme si c'était un tableau de byte !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup, avec ton code et quelques arrangements je m'en suis sorti.

    Citation Envoyé par ShailLeTroll
    @coxycross, faudrait chercher un peu plus
    Crois moi, je cherche, mais pas au bon endroit, et il est vrai que j'ai que regardé sur les sites français alors que l'anglais ne me dérange pas.

    Bref, merci

    cdt Coxycross

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 597
    Points : 25 280
    Points
    25 280
    Par défaut
    Citation Envoyé par coxycross Voir le message
    et il est vrai que j'ai que regardé sur les sites français alors que l'anglais ne me dérange pas.
    Je trouve qu'il manque en C++Builder un équivalent de Guide Pascal et Delphi
    Beaucoup d'élement VCL\RTL sont communs mais la syntaxe C++Builder est souvent plus retord !

    En C++Builder on peut se servir des éléments natifs du langage (que je ne connais que très peu car Delphiste d'origine) et surtout la RTL \ VCL qui est le principal intérêt de C++Builder

    C'est d'ailleurs pas évident, lorsque certains membres utilisent C++Builder comme ils utiliseraient Notepad en codant tout en lib C oubliant la VCL

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par ShaiLeTroll
    C'est d'ailleurs pas évident, lorsque certains membres utilisent C++Builder comme ils utiliseraient Notepad en codant tout en lib C oubliant la VCL
    Ce qui, je dois l'avouer, m'arrive encore !

    Quand on commence c'est pas évident de prendre un main C++ builder sans aucune formation ou cours, certaines syntaxes sont assez particulières.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Je me permets une dernière question, est-il possible de forcer le format dans lequel est enregistré le fichier. Je m'explique, avec mon code, on peut enregistrer le tout dans un fichier dont un choisis le nom et l'extension.

    Mais avec le code précédent, est-il possible de forcer le format en .dat, tout en laissant le choix du titre ?


    cdt Coxycross

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 597
    Points : 25 280
    Points
    25 280
    Par défaut
    Il te suffit de mettre un Filter dans SaveDialog ou via la propriété DefaultExt
    Si l'Option ofExtensionDifferent est présente, tu le forces dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
         sl->SaveToFile(ChangeFileExt(SaveDialog1->FileName, ".dat"));
    ...

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Simple et efficace ! Merci beaucoup !

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Il te suffit de mettre un Filter dans SaveDialog ou via la propriété DefaultExt
    Si l'Option ofExtensionDifferent est présente, tu le forces dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
         sl->SaveToFile(ChangeFileExt(SaveDialog1->FileName, ".dat"));
    ...
    Bonjour,

    Encore une question, est-ce qu'avec ce meme filtre, on peut forcer lenom du fichier ?
    C'es à dire que dans mon prgramme dans, un edit, on rentre l'ID d'un animal, et cet ID doit être le nom du fichier.

    Cdt Coxycross

  12. #12
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Citation Envoyé par coxycross Voir le message
    Bonjour,

    Encore une question, est-ce qu'avec ce meme filtre, on peut forcer lenom du fichier ?
    C'es à dire que dans mon prgramme dans, un edit, on rentre l'ID d'un animal, et cet ID doit être le nom du fichier.

    Cdt Coxycross
    Et en renseignant le FileName avant l'execute du SaveDialog, cela fonctionne pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SaveDialog1->FileName = Edit1->Text

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Si en effet, merci c'est exactement ce que je cherchais !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/04/2009, 09h49
  2. Enregistrer Le contenu d'un Widget dans un fichier
    Par dogua dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 16/12/2008, 20h34
  3. enregistrer le contenu d'un Edit dans un fichier texte
    Par tapouni dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2008, 23h02
  4. Enregistret le contenu d'un edit dans un fichier text
    Par prison_break dans le forum C++Builder
    Réponses: 19
    Dernier message: 02/01/2007, 13h55

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