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 :

Enregistret le contenu d'un edit dans un fichier text


Sujet :

C++Builder

  1. #1
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut Enregistret le contenu d'un edit dans un fichier text
    bonjour à tous les développeurs

    voila j'aimerai pouvoir enregistrer le contenu d'un edit dans un fichier text...et je voudrais savoir savoir si quelqu'un l'a deja fait et comment il a fait...

    merci d'avance

    PB
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Moi je verrais 2 solutions

    Ouvrir un fichier et enregistrer le contenu de ton Edit dedans

    Utiliser un Memo, copier la valeur de ton Edit dans ce memo et ensuite utiliser la méthode SaveToFile pour enregistrer ton fichier.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        TEdit *Edit = new TEdit();
        TMemo *Memo = new TMemo();
     
        // Chemin de mon fichier
        AnsiString CheminFichier;       // tu mets le chemin de ton fichier dedans
     
        Edit->Text = "test";
     
        // On sauvegarde le contenu de l'edit dans le memo
        Memo->Lines->Add(Edit->Text);
     
       // On sauvegarde le contenu du Memo
       Memo->Lines->SaveToFile(CheminFichier);

  3. #3
    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
    Tu peux également le faire avec un TStringList

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TStringList* Fichier = new TStringList;
     
    Fichier->Add(Edit1->Text);
     
    Fichier->SaveToFile("c:\\monfichiertexteàmoiquejaime.txt");
     
    delete Fichier;
    + + +

  4. #4
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    mais tout ce que vous m'avez dit je le place ou...
    car je l'ai placé dans un bouton envoyer et ca ne fonctionne pas...
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  5. #5
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    As tu bien regardé si le fichier avait été créé ?

  6. #6
    Membre averti
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Points : 360
    Points
    360
    Par défaut
    Les solutions proposées me paraissent du niveau d'un lance-missile pour abattre un lapin
    C'est très riche de créer un nouveau composant rien que pour ça.

    Le code ci-dessous est beaucoup plus léger et parfaitement efficace :
    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
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <stdio.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    FILE *out;
    	if ((out = fopen("C:\\MonFichier.txt", "wt")) != NULL) // ouverture du fichier réussie
    	{
    		fputs(Edit1->Text.c_str(), out);
    		fclose(out);
    	}
    	else
    		ShowMessage("Impossible de créer le fichier");
    }
    //---------------------------------------------------------------------------
    Ne pas oublier le #include <stdio.h>
    RAD Studio 10.3 / Ubuntu 20.04 - RYZEN 7 2700X - 24Go de RAM

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Citation Envoyé par Altau
    Les solutions proposées me paraissent du niveau d'un lance-missile pour abattre un lapin
    C'est très riche de créer un nouveau composant rien que pour ça.

    Le code ci-dessous est beaucoup plus léger et parfaitement efficace :
    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
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <stdio.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    FILE *out;
    	if ((out = fopen("C:\\MonFichier.txt", "wt")) != NULL) // ouverture du fichier réussie
    	{
    		fputs(Edit1->Text.c_str(), out);
    		fclose(out);
    	}
    	else
    		ShowMessage("Impossible de créer le fichier");
    }
    //---------------------------------------------------------------------------
    Ne pas oublier le #include <stdio.h>
    En même temps tu n'es pas en C alors déjà vaudrait mieux utiliser les classes de la libC++ et pas les fonctions de la libc...ça fait plus propre.

    Ensuite utiliser la VCL quand tu développe sous Borland je trouve que ça relève du bon sens....enfin chacun son point de vue.
    Neilos

  8. #8
    Membre averti
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par Neilos
    En même temps tu n'es pas en C alors déjà vaudrait mieux utiliser les classes de la libC++ et pas les fonctions de la libc...ça fait plus propre.
    Bien sûr ! mais ma solution fonctionne, et bien !
    Citation Envoyé par Neilos
    Ensuite utiliser la VCL quand tu développe sous Borland je trouve que ça relève du bon sens....enfin chacun son point de vue.
    Oui, mais pas dans cette optique-là. Créer un composant visuel riche et plutôt gourmand en ressources simplement pour une fonctionnalité aussi basique qu'écrire quelques octets dans un fichier n'est pas du bon sens, sauf pour les fabriquants de processeurs et de ram qui n'espèrent rien d'autre de développeurs paresseux pour inciter les gogos à changer de micro tous les deux ans
    RAD Studio 10.3 / Ubuntu 20.04 - RYZEN 7 2700X - 24Go de RAM

  9. #9
    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 Altau
    Oui, mais pas dans cette optique-là. Créer un composant visuel riche et plutôt gourmand en ressources simplement pour une fonctionnalité aussi basique qu'écrire quelques octets dans un fichier n'est pas du bon sens, sauf pour les fabriquants de processeurs et de ram qui n'espèrent rien d'autre de développeurs paresseux pour inciter les gogos à changer de micro tous les deux ans
    C'est vrai qu'utiliser un TStringList pour sauvegarder un simple Edit, c'est comme utiliser un ICBM pour tuer une mouche mais bon...
    C'était un exemple parmis beaucoup d'autres et cela pourra servir à prison_break plus tard
    Sinon, il peut se rabattre sur les composants TFileStream. Leur utilisation se rapproche plus de la gestion de fichiers en C tout en étant des composants de la VCL

    Nb: Un TStringList n'est pas un composant visuel
    + + +

  10. #10
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci à tous pour vos réponses, pour info j'ai utlisé le code de altau qui me paraissait simpleb et clair, je ne sais pas si c'est le meilleur mais cela fonctionne parfaitement...

    Merci encore
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  11. #11
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    re

    j'ai fait la méthode de altau qui fonctionne bien mais en voulant aller plus loin , je bloque un peu.

    J'arrive a ecrire avec plusieurs edit en faisant

    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
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <stdio.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    FILE *out;
    	if ((out = fopen("C:\\MonFichier.txt", "wt")) != NULL) // ouverture du fichier réussie
    	{
    		fputs(Edit1->Text.c_str(), out);
    		fputs(Edit2->Text.c_str(), out);
                    fputs(Edit3->Text.c_str(), out);
     
    fclose(out);
    	}
    	else
    		ShowMessage("Impossible de créer le fichier");
    }
    //---------------------------------------------------------------------------
    ce code écrit tout le contenu a la suite des autres

    j'ai voulu mettre des espaces entre le contenu des edit en faisant
    fputs(" ".c_str(), out);
    mais cela ne fonctionne pas
    et j'aurai également aimé savoir comment sauter une ligne???

    merci encore
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  12. #12
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    je retire mes 2 questions, j'ai trouvé en cherchant un peu plus.

    J'ai descidé de remplacer le bouton par un timer, le problème qui se pose c'est que toutes les données ne se mette pas a la suite des autres, a chaque fois cela ecrase le text du debut, pourtant je saute une ligne en mettant \n
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  13. #13
    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 prison_break
    je retire mes 2 questions, j'ai trouvé en cherchant un peu plus.

    J'ai descidé de remplacer le bouton par un timer, le problème qui se pose c'est que toutes les données ne se mette pas a la suite des autres, a chaque fois cela ecrase le text du debut, pourtant je saute une ligne en mettant \n
    si je ne me trompe pas, fopen donne accès au fichier tout en positionnant le curseur d'écriture au début du fichier. Il faut faire un fseek pour te déplacer dans ton fichier (voir l'aide pour plus d'infos).
    + + +

  14. #14
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    j'utilise fopen, mais fseek, je n'arrive pas à l'utiliser...
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  15. #15
    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 prison_break
    j'utilise fopen, mais fseek, je n'arrive pas à l'utiliser...
    J'ai proposé fseek mais, moi aussi, je ne vois pas comment l'utiliser

    Par contre, tu peux utiliser le mode "a" au lieu du mode "wt" au niveau du fopen

    Citation Envoyé par Aide de Builder au sujet du mode a
    open for writing at end-of-file or create for writing if the file does not exist.
    + + +

  16. #16
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci mais a quoi cela va me servir de mettre "a" a la place de "wt", wt fonctionne trés bien, je ne vais donc pas le modifier...
    Mais je ne vois vraiment pas comment faire pour ne pas écraser mes anciennes données...

    Dis moi si je t'ai mal compris bananeko???
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  17. #17
    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 prison_break
    Merci mais a quoi cela va me servir de mettre "a" a la place de "wt", wt fonctionne trés bien, je ne vais donc pas le modifier...
    Mais je ne vois vraiment pas comment faire pour ne pas écraser mes anciennes données...
    Dis moi si je t'ai mal compris bananeko???
    Comme je le dis dans ma précédente quote,

    open for writing at end-of-file or create for writing if the file does not exist.
    le mode a permet d'ouvrir le fichier pour écriture tout en positionnant le curseur du fichier à la fin du fichier. Si le fichier n'existe pas, il sera créé.
    Si tu utilises ce mode, tu pourra créer ton fichier si inexistant et tu pourras écrire à la fin du fichier si il existe.
    + + +

  18. #18
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Désolée je n'avais pas compris ce que tu avais voulu dire...

    Cela fonctionne très bien désormais, tout se met en dessous des autres...

    c'est super ...

    Merci à tous
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

  19. #19
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut

    Une des solutions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    FILE* PtrFichier=fopen("Chemin de ton fichier","rt+");
    if(PtrFichier!=NULL)
             {
             fseek(PtrFichier, 0L, SEEK_END);//pointer vers la fin du fichier
     
             //A partir de la j'écri depuis la fin
     
             fclose(PtrFichier);
             }
    Et je confirme pour bakaneko pour le mode "a"


    Bonne continuation !
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  20. #20
    Membre du Club Avatar de prison_break
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    ta réponse est également bonne Interruption13h...

    merci a vous deux PB
    (\ _ /)
    (='.'=)
    (")-(")
    Voici Lapinou. Aidez le à conquérir le mondeen le reproduisant

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

Discussions similaires

  1. enregister le contenue de text edit dans un fichier text
    Par othmane09 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 16/06/2014, 16h27
  2. [Débutant] Enregistrer le contenu de plusieurs Edit dans un fichier .txt
    Par coxycross dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/06/2012, 10h28
  3. Réponses: 6
    Dernier message: 01/04/2009, 09h49
  4. 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
  5. Réponses: 1
    Dernier message: 29/09/2007, 09h46

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