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
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
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);
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;
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...
As tu bien regardé si le fichier avait été créé ?
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 :Ne pas oublier le #include <stdio.h>
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"); } //---------------------------------------------------------------------------
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.Envoyé par Altau
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.
Bien sûr ! mais ma solution fonctionne, et bien !Envoyé par Neilos
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 ansEnvoyé par Neilos
C'est vrai qu'utiliser un TStringList pour sauvegarder un simple Edit, c'est comme utiliser un ICBM pour tuer une mouche mais bon...Envoyé par Altau
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
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
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
ce code écrit tout le contenu a la suite des autres
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"); } //---------------------------------------------------------------------------
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
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).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'utiliserEnvoyé par prison_break
Par contre, tu peux utiliser le mode "a" au lieu du mode "wt" au niveau du fopen
Envoyé par Aide de Builder au sujet du mode a
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,Envoyé par prison_break
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éé.open for writing at end-of-file or create for writing if the file does not exist.
Si tu utilises ce mode, tu pourra créer ton fichier si inexistant et tu pourras écrire à la fin du fichier si il existe.
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
Salut
Une des solutions :
Et je confirme pour bakaneko pour le mode "a"
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); }
Bonne continuation !
ta réponse est également bonne Interruption13h...
merci a vous deux PB
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager