Scan d'un fichier texte [Résolu]

babaOrhumette 96 Messages postés mardi 14 avril 2009Date d'inscription 2 juin 2016 Dernière intervention - 8 févr. 2010 à 13:46 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 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
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 8 févr. 2010 à 13:57
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é. -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de krimog
Meilleure réponse
mkl238 10 Messages postés samedi 13 mars 2004Date d'inscription 10 février 2010 Dernière intervention - 8 févr. 2010 à 20:19
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";
   }
 }
}

Merci mkl238 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de mkl238
Meilleure réponse
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 9 févr. 2010 à 09:42
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é. -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de krimog
babaOrhumette 96 Messages postés mardi 14 avril 2009Date d'inscription 2 juin 2016 Dernière intervention - 8 févr. 2010 à 19:30
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
babaOrhumette 96 Messages postés mardi 14 avril 2009Date d'inscription 2 juin 2016 Dernière intervention - 8 févr. 2010 à 20:34
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
jeMarley 7 Messages postés jeudi 15 avril 2010Date d'inscription 10 mai 2010 Dernière intervention - 15 avril 2010 à 09:51
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
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 15 avril 2010 à 10:53
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.