Première appli en c#: fonction recherche remplace

supaione Messages postés 11 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009 - 23 janv. 2009 à 14:59
supaione Messages postés 11 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009 - 27 janv. 2009 à 17:22
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

WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
23 janv. 2009 à 20:52
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
0
supaione Messages postés 11 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
26 janv. 2009 à 10:02
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".
0
supaione Messages postés 11 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
27 janv. 2009 à 14:46
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);
                }
            }
        }
0
supaione Messages postés 11 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 29 janvier 2009
27 janv. 2009 à 17:22
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
                        }
                    }
               }
            }
        }
0