Lister des fichiers dans une zone de liste ! [Résolu]

Signaler
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010
-
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010
-
Bonjour a tous,

voila je suis en stage et je dois développer une appli en c#, le soucis est que je ne connais pas ce langage :/

En cherchant sur le net j'ai réussi a lister des fichiers contenu dans un répertoire :

DirectoryInfo monrepertoire = new DirectoryInfo("C:\...");
FileInfo[] mesfichiers = monrepertoire.GetFiles("*.log");

Et maintenant je voudrai inscrire le nom des fichiers contenu dans "mesfichiers" dans une zone de liste, pour cela j'ai essayer :

int filecount = mesfichiers.GetUpperBound(0) + 1;
for (int i = 0; i < filecount; i++)
{
listBox2_2.Items.Add(mesfichiers);
}

mais il ne m'affiche pas correctement le nom des fichiers, il m'affiche "tableau de FileInfo[]"

Si quelqu'un a une idée, merci d'avance !

49 réponses

Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Salut !

Il te faut ajouter le nom de chacun des fichiers contenus dans ton tableau de FileInfo, et non le tableau en lui même !

foreach(FileInfo FI in mesfichiers)
{
listBox2_2.Items.Add(FI.FileName.ToString());
}
A+  
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

Merci beaucoup de ton aide, j'ai tester et sa fonctionne. J'ai juste du changer "FileName" par "Name".

Merci beaucoup.

A+
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
Bonjour,

il y a encore plus simple :
listBox2_2.DataSource = mesfichiers;
listBox2_2.DisplayMember = "Name";
listBox2_2.ValueMember = "Name";


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
Voici un exemple que j'avais publié il y a quelques temps : http://www.csharpfr.com/codes/UTILISATION-COMBOBOX-DATABINDING-OBJECT_34338.aspx


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

J'ai une autre petite question !

Dans mon appli je vais devoir utiliser des fichiers. Pour cela je selectionne le fichier que je veux utiliser ensuite j'affiche son contenu dans une richTextBox. Suite a cela je voudrais éxecuté des requetes sql pour réduire le contenu de la richTextBox. Le hic c'est que je ne vois pas comment éxecuté ces requètes sur le "fichier" en gros. Si quelqu'un a une idée, je suis preneur !!!
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

A ma connaissance les requêtes SQL servent à lire ou écrire dans une base de données !
De quel type de fichier parles tu ?

 
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

je parle de fichier log. Par exemple dans le fichier apparait plusieur fois le mot "error" et je dois extraire les lignes ou il y a écrit ce mot "error" pour comprendre l'erreur et pouvoir la corrigé.
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Si c'est un fichier de type texte, je pense que tu vas devoir utiliser un StreamReader, lire ton fichier ligne par ligne et tester le contenu des chaines lues.
Peut être existe t'il quelque chose de mieux, je ne sais pas.

Bonne soirée

 
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Salut

Comme dit Moomoon07, le SQL ne te permettra pas de lire ton fichier.

Tu dois donc coder toi-même la fonction qui va faire ça.
Mais en gros, tu peux faire un truc du genre :
StreamReader sr = new StreamReader("MonFichier.log");
List<string> listeErreurs = new List<string>();

string ligne;
while((ligne = sr.ReadLine) != null)
{
    if(ligne.StartsWith("error"))
    {
        listeErreurs.Add(ligne);
    }
}

sr.Close();


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

Oui effectivement je viens d'éssayer et cela fonctionne ! Merci bien.

Maintenant ce que je voudrais c'est afficher le contenu de "listeErreurs" dans ma richTextBox. Pour cela que dois je utiliser comme propriété?
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
RichTextBox.Text, tout simplement

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

oui ca je sais mais c'eszt de l'autre coté plutot :

RichTextBox.Text = listeErreurs. ???

Merci d'avance.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
foreach(string erreur in listeErreurs) // on lit chaque valeur de listeErreurs et on l'enregistre dans une variable nommée erreur
{
    maRichTextBox.Text = maRichTextBox.Text + erreur + "\n";
    // \n est le caractère de retour à la ligne
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

nikel ça fonctionne. Merci beaucoup pour ton aide !!!
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
une solution en une ligne !

maRichTextBox.Text = string.Join('\n', listErreur.ToArray());


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

Merci de votre aide !!!

Maintenant chose plus difficile je pense, je dois afficher le contenu d'un fichier log d'une imprimante -> pour ca pas de problème
Ce que je voudrais c'est en affichant le contenu du fichier dans ma richTextBox faire apparaitre les lignes aussi.
Car dans mon traitement, il faudra que je selectionne les lignes ou apparait "Print DEBUT" et "Print FIN". Suite a cette selection, il faudra que j'affiche le contenu du fichier situé entre un "Print DEBUT" et un "Print FIN". Je sais pas si tout est clair ...

Je pars a la recherche de la solution mais je suis a l'écoute de toute proposition !!!!
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Si j'ai bien compris, tu veux intégrer le numéro de la ligne de ton fichier log contenant l'erreur ?

PS : @Sebmafate: moi aussi on peut mettre mon code sur une seule ligne !
foreach(string erreur in listeErreurs)  maRichTextBox.Text = maRichTextBox.Text + erreur + "\n";

^^
(en fait, même si ma méthode est moins efficace, je l'ai surtout utilisée car elle est très simple à comprendre)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

oui voila c'est ca en fait suite au traitement il m'affichera par exemple :

xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN
xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN
xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN
xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN
xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN
xxxxxxxxxx Print DEBUT
xxxxxxxxxx Print FIN

et je voudrai que devant chacune de ces lignes apparait le numéro de la ligne de mon fichier log contenant ces informations. Car ensuite je devrais trouver le moyen pour afficher les données situées entre 2lignes par exemple :

3 xxxxxxxxxx Print DEBUT
16 xxxxxxxxxx Print FIN
26 xxxxxxxxxx Print DEBUT
38 xxxxxxxxxx Print FIN
86 xxxxxxxxxx Print DEBUT
98 xxxxxxxxxx Print FIN

et je voudrais afficher les données situées entre le Print DEBUT de la ligne 26 et le Print FIN de la ligne 38 !
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
@krimog > quitte à faire un foreach autant le faire comme ceci :

listErreur.ForEach(e => maRichTextBox.Text += e + "\n");


bref... pour en revenir à la dernière question.

Pour faire ceci il faut que tu stockes le numéro de tes lignes leur de la lecture de ton fichier


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Messages postés
48
Date d'inscription
lundi 4 janvier 2010
Statut
Membre
Dernière intervention
4 février 2010

et par quel procédé je peux faire cela?