Décalage à chaque nouvelle lecture du fichier txt [Résolu]

Toinou59118 4 Messages postés dimanche 25 septembre 2011Date d'inscription 25 septembre 2011 Dernière intervention - 25 sept. 2011 à 19:33 - Dernière réponse : Toinou59118 4 Messages postés dimanche 25 septembre 2011Date d'inscription 25 septembre 2011 Dernière intervention
- 25 sept. 2011 à 23:46
Bonsoir,

Mon titre n'est peut-être pas assez explicite donc voici mon problème :

J'ai réalisé un petit Agenda en C# et j'enregistre mes données dans un fichier texte. Le problème étant que, ma fonction "initialisation" dans laquelle je réalise mon StreamReader, lorsqu'elle est lancée (au lancement de l'application) ajoute un espace devant chaque champs déjà entrée dans le fichier texte.

Ce qui me donne un affichage en escalier à chaque fois que je rouvre mon application pour y ajouter une donnée..

Voici mon code :

private void initialisation()
{
    string ligne;
    string[] element = new string[3];
    nbRDV = 0;
    StreamReader SR = new StreamReader("toto.txt");
    while (!SR.EndOfStream)
    {
        ligne = SR.ReadLine();
        element = ligne.Split(';');
        RDVs[nbRDV] = new RDV(element[1], element[2], DateTime.Parse(element[0]));
        nbRDV++;
    }
    SR.Close();
}


Si besoin d'informations ou quoi que ce soit, n'hésitez pas.

Merci par avance !
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Toinou59118 4 Messages postés dimanche 25 septembre 2011Date d'inscription 25 septembre 2011 Dernière intervention - 25 sept. 2011 à 23:46
3
Merci
Bonsoir,

C'est ok, j'ai trouvé ! Cela venait de ma fonction "MyToString()" dans laquelle j'avais inscrit " ; " au lieu de ";", ce qui ajouté continuellement un espace après le ;

Merci pour votre aide et bonne continuation à tous !

Merci Toinou59118 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Toinou59118
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 25 sept. 2011 à 19:54
0
Merci
Bonjour,

Peux-tu nous montrer le contenu de ton fichier texte, pour voir d'où ça peut provenir ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
Toinou59118 4 Messages postés dimanche 25 septembre 2011Date d'inscription 25 septembre 2011 Dernière intervention - 25 sept. 2011 à 19:57
0
Merci
Bonjour,

Merci pour cette réponse rapide, voici le contenu actuel de mon fichier texte :

01/01/2000 00:00:00 ; ;
01/10/2011 00:00:00 ; Test Titre 1;Test Description 1
24/09/2011 00:00:00 ; Test Titre 2;Test Description 2
03/10/2011 00:00:00 ;Test Titre 3;Test Description 3

On peut voir le décalage qui s'est réalisé.
Commenter la réponse de Toinou59118
Whismeril 12131 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 23 octobre 2018 Dernière intervention - 25 sept. 2011 à 21:11
0
Merci
Bonsoir,
est tu sûr que ton décalage se produise ici?
Il me semble que le streamreader lit et n'écrit pas.
Le problème se situerait (je pense) plutôt dans une fonction avec un streamwriter.

Sinon as tu pensé à un fichier xml?
Tu fournis ta liste de rendez vous à un xmlserializer et il se débrouille tout seul pour faire le parsage.
Cette source m'a aidée à débuter, lire les commentaires aussi.


Whismeril
Commenter la réponse de Whismeril
Toinou59118 4 Messages postés dimanche 25 septembre 2011Date d'inscription 25 septembre 2011 Dernière intervention - 25 sept. 2011 à 21:23
0
Merci
Bonsoir,

Après réflexion, cela se produit après que j'ai ajouté un nouveau rendez vous, je le remarquais juste lorsque j'ouvrai à nouveau mon application, c'est ce qui m'a fait penser à cette première conclusion.

Voici le code StreamWriter :

        private void buttonAdd_Click(object sender, EventArgs e)
        {
            string boxTitle;
            string boxDescription;
            DateTime boxDate;
            
            boxTitle = textBoxTitle.Text;
            boxDescription = richTextBoxDescAdd.Text;
            boxDate = dateTimePicker.Value;

            if (nbRDV < 1000)
            {
                RDVs[nbRDV] = new RDV(boxTitle, boxDescription, boxDate.Date);
                labelNb.Text = nbRDV.ToString();
            }
            listBoxDel.Items.Add(boxDate.Date + " " + boxTitle + " " + boxDescription);
            nbRDV++;

            StreamWriter SW = new StreamWriter("toto.txt");
            for (int i = 0; i < nbRDV; i++)
            {
                SW.WriteLine(RDVs[i].MyToString());
            }
            SW.Close();
            
            MessageBox.Show("Entrée bien ajoutée !");

            textBoxTitle.Clear();
            richTextBoxDescAdd.Clear();
        
        }


Si besoin d'informations supplémentaires, demande moi !

Pour ce qui est de l'enregistrement en fichier XML je n'y avais pas pensé, je vais regarder le lien que tu m'as fourni et méditer à cela.
Commenter la réponse de Toinou59118
NHenry 14280 Messages postés vendredi 14 mars 2003Date d'inscription 22 octobre 2018 Dernière intervention - 25 sept. 2011 à 22:18
0
Merci
Bonjour,

A la place d'utiliser StreamReader et StreamWriter pour lire des lignes, tu peux aussi utiliser io.File.ReadAllLines et WriteAllLines.

Peut être que ton pb se trouve dans le code de :
RDVs[i].MyToString()

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.