Lister des fichiers dans une zone de liste !

Résolu
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010 - 14 janv. 2010 à 11:32
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010 - 27 janv. 2010 à 09:34
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

Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
14 janv. 2010 à 11:56
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+  
3
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
14 janv. 2010 à 12:07
Merci beaucoup de ton aide, j'ai tester et sa fonctionne. J'ai juste du changer "FileName" par "Name".

Merci beaucoup.

A+
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
14 janv. 2010 à 14:10
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
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
14 janv. 2010 à 14:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
14 janv. 2010 à 16:19
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 !!!
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
14 janv. 2010 à 17:16
A ma connaissance les requêtes SQL servent à lire ou écrire dans une base de données !
De quel type de fichier parles tu ?

 
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
14 janv. 2010 à 17:21
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é.
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
14 janv. 2010 à 17:40
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

 
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
14 janv. 2010 à 18:02
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é. -
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 09:29
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é?
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
15 janv. 2010 à 10:17
RichTextBox.Text, tout simplement

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 10:40
oui ca je sais mais c'eszt de l'autre coté plutot :

RichTextBox.Text = listeErreurs. ???

Merci d'avance.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
15 janv. 2010 à 11:22
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é. -
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 12:02
nikel ça fonctionne. Merci beaucoup pour ton aide !!!
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
15 janv. 2010 à 13:26
une solution en une ligne !

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


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 14:19
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 !!!!
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
15 janv. 2010 à 14:49
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é. -
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 15:25
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 !
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
15 janv. 2010 à 15:42
@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
0
vto59 Messages postés 48 Date d'inscription lundi 4 janvier 2010 Statut Membre Dernière intervention 4 février 2010
15 janv. 2010 à 15:57
et par quel procédé je peux faire cela?
0
Rejoignez-nous