Première appli en c#: fonction recherche remplace

Signaler
Messages postés
11
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009
-
Messages postés
11
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009
-
Bonjour,

 Je commence ma première appli en C#.

 J'ai une fenêtre contenant deux list box (1 me permettant de selectionner les fichiers à modifier - 1 seconde me permettant de selectionner un fichier texte contenant mes recherches remplaces). Et deux boutons me permettant de trouver mes fichiers.

 Mon troisième bouton me permettra d'ouvrir mes fichiers à traiter et de lire mon fichier contenant mes remplacements.

 Pour l'instant je ne sais pas comment faire le lien entre mes selection dans mes listbox et mes actions de remplacements.

Quelqu'un peut m'aider.

Merci d'avance.

4 réponses

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

Je ne suis pas sur de bien comprendre ton problème, mais en gros il faut que quand tu cliques sur ton 3e bouton tu récupère la liste des fichiers à modifier

List<string> fichiersAModifier = new List(); //contient les chemins des chemins à modifier
foreach(object fichier in listboxFichiers.SelectedItems)
  fichiersAModifier.Add(fichier.ToString());

Puis tu récupère le nom du fichier qui contient les remplacements.

Puis après, pour chaque fichier dans fichiersAModifier
- tu l'ouvres avec un StreamReader
-tu ouvre le fichier qui contient les remplacements
-tu lis le fichier qui contient les remplacements
-pour chaque chaine a remplacer, tu cherche la même chaine dans le 1er fichier et tu la remplace

Tu peux aussi mettre les chaînes à remplacer en mémoire pour ne pas avoir à lire le fichier de remplacement n fois
Messages postés
11
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009

Wishhh,

Tu as tout à fait compris mon problème.
J'ai crée mes deux listbox.
J'ai crée quatres boutons me permettant de lélectionner de l'une à l'autre un fichier ou tous mes fichiers.
J'ai crée un bouton remplacer. Et c'est sur celui ci que je mets mon "streamreaders".
Messages postés
11
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009

J'ai crée un bouton (voir code), mais il accepte pas la ligne suivante.
string fichier = listBoxLeft.Items[i - 1];

Je ne comprends pas pourquoi.

Quelqu'un peu m'aider.

      private void buttonRemplacer_Click(object sender, EventArgs e)
        {
            //Récupération de la valeur courante des fichiers sélectionnés dans la listbox
            int i = listBoxRight.Items.Count;
            //Convertion de la valeur en chaine de caractères pour l'ouverture des fichiers
            string fichier = listBoxLeft.Items[i - 1];
            using (System.IO.StreamReader sr = System.IO.File.OpenText(fichier))
            {
                string line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    System.Console.WriteLine(line);
                }
            }
        }
Messages postés
11
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
29 janvier 2009

Après une belle galère pour comprendre le principe et un bon coup de main d'un collègue en info, j'ai réussi à faire un bouton pour scruter mon fichier.
Maintenant j'aimerai pouvoir intégrer l'option pour rechercher et remplacer une chaine de caractère.

Quelqu'un peut m'aider.
Merci d'avance.

Ci joint le script:

private void buttonRemplacer_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < listBoxLeft.Items.Count; i++)                                        // On parcoure les items de la listbox
            {
                if (listBoxLeft.SelectedIndices.Contains(i))                                         // Si l'item est sélectionné
                {
                    string fichier = listBoxLeft.Items[i].ToString();// On récupère le nom de fichier qui est dans l'item
                    string newsfichier = listBoxLeft.Items[i].ToString();  
                    using (System.IO.StreamReader sr = System.IO.File.OpenText(fichier))             // On ouvre le fichier
                    {
                        string line = "";                                                            // On déclare une variable pour lire chaque ligne
                        while ((line = sr.ReadLine()) != null)                                       // Tant qu'il reste une ligne, on la lit
                        {
                         System.Console.WriteLine(line);                                          // On écrit la ligne sur la console
                        }
                    }
               }
            }
        }