Scan d'un fichier texte [Résolu]

Messages postés
100
Date d'inscription
mardi 14 avril 2009
Dernière intervention
13 janvier 2019
- - Dernière réponse : krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
- 15 avril 2010 à 10:53
Bonjour,

Je me permets de créer un nouveau sujet car je ne trouve pas forcement ce qu'il me faudrait sur le web.

J'espère ne pas m'être trompé de section, si c'est le cas, je m'en excuse.

Voilà, j'ai crée une fonction qui me donne un nombre entre 1 à 20 inclus et le ressort sort une Textbox1.
Dans un fichier .txt, chaque nombre correspond à un nom. Extrait :
...
12 George Bagnole
13 Gilberte Osson
14 Maurice D. Mouson
15 Samir MBala Frurk
...

J'aimerai un code simple qui scan le fichier .txt pour en ressortir le nom correspondant au nombre sorti dans la TextBox1 sur une nouvelle TextBox2.

En espérant avoir été la plus claire possible, je vous remercie encore de vos précieuses aides passées et futures.

Bonne journée.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
36
3
Merci
Salut

Pour scanner le fichier, tu le lis ligne par ligne (StreamReader.ReadLine()) et tu regarde si ta ligne commence par ton numéro
if (maLigne.StartsWith(monNombre.ToString() + " ")) ...
Après, il te suffit de mettre la ligne (en enlevant le chiffre du début de la ligne) dans la textbox
maTextBox.Text = maLigne.Replace(monNombre.ToString() + " ", "");

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krimog
Messages postés
10
Date d'inscription
samedi 13 mars 2004
Dernière intervention
10 février 2010
3
Merci
Bonjour,

A vue de nez je dirais que c'est parce que ton fichier ne contient pas 20 lignes...
Vérifie s'il y a encore des lignes avec la méthode Streamreader.Peek():

string path = @"c:\Montexte.txt";

using(StreamReader reader = new StreamReader(path))
{
 while (reader.Peek() >= 0)
 {
   string maligne = reader.ReadLine();
   if (maligne.StartsWith(nombretrouve.ToString() + " "))
   { 
     ligne.Text = "blabla";
   }
 }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de mkl238
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
36
3
Merci
Une fois que tu as trouvé ta ligne, tu peux également directement sortir de ta boucle avec un break. De plus, plutôt que d'utiliser un for, tu peux utiliser un while dont tu ne sors que si la ligne a été trouvée ou que tu es arrivé à la fin de ton document.

string path = @"c:\Montexte.txt";

StreamReader reader = new StreamReader(path);
string maligne;
do // début de boucle
{
    maligne = reader.ReadLine();
    if (maligne != null) // S'il y a une nouvelle ligne (qu'on est pas à la fin du fichier)
    {
        if (maligne.StartsWith(nombretrouve.ToString()))
        {
            ligne.Text = maligne.Replace(nombretrouve.ToString() + " ", "");
            break; // Si on a trouvé la ligne, on sort de la boucle
        }
    }
} while(maligne != null); // On recommence la boucle tant qu'il reste des lignes


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krimog
Messages postés
100
Date d'inscription
mardi 14 avril 2009
Dernière intervention
13 janvier 2019
0
Merci
Merci beaucoup, je galère un peu, beaucoup même.

string path = @"c:\Montexte.txt";

                        StreamReader reader = new StreamReader(path);
                        for (int i = 0; i < 20; i++)
                        {
                            
                            string maligne = reader.ReadLine();
                            if (maligne.StartsWith(nombretrouve.ToString() + " "))
                            { 
                            ligne.Text = "blabla";
                            }
                        }

if (maligne.StartsWith(nombretrouve.ToString() + " ")) me donne l'erreur L'exception NullReferenceException n'a pas été gérée

Que fais-je de mal?

Merci.
Commenter la réponse de babaOrhumette
Messages postés
100
Date d'inscription
mardi 14 avril 2009
Dernière intervention
13 janvier 2019
0
Merci
Lol, ah bah oui c'était ça.
Merci à vous deux, c'était très sympa.

Le code :

string path = @"c:\Montexte.txt";

                        StreamReader reader = new StreamReader(path);
                        for (int i = 0; i < 9; i++)
                        {

                            string maligne = reader.ReadLine();
                            if (maligne.StartsWith(nombretrouve.ToString()))
                            {
                                ligne.Text = maligne.Replace(nombretrouve.ToString() + " ", ""); 
                            }
                        }
Commenter la réponse de babaOrhumette
Messages postés
7
Date d'inscription
jeudi 15 avril 2010
Dernière intervention
10 mai 2010
1
0
Merci
juste une question "si on connait le nom d'un fichier est ce qu'on afficher son chemin d'accès"par exemple:............(notepad.exe)
????et il me retourne le chemin ver notepad.bref comment faire en Csharp pour recevoire le chemin d'accès d'un fichier conaissant son nom????
bob
Commenter la réponse de jeMarley
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Dernière intervention
14 février 2015
36
0
Merci
De base, on ne peut pas, tout simplement car deux fichiers peuvent avoir le même nom et un chemin d'accès différent.

Cependant, pour des programmes comme notepad, tu peux retrouver son chemin d'accès en regardant les variables d'environnement, puisque le dossier dans lequel le programme se trouve est dans la variable path (c'est grâce à ça que tu peux faire Démarrer → Exécuter → Notepad sans avoir à préciser son chemin d'accès).

Sinon, il faut que tu fasses un système de recherche récursive pour trouver tous les fichiers ayant le nom que tu cherches (mais là ça deviendra extrêmement long...)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog

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.