Fichier .txt volumineux

Résolu
DragZ - 3 févr. 2020 à 14:51
DragZ_ Messages postés 6 Date d'inscription jeudi 6 février 2020 Statut Membre Dernière intervention 7 février 2020 - 7 févr. 2020 à 09:08
Bonjour,
j'ai un petit soucis mon programme dois récupérer un fichier log et l'écrire dans un richtext box ou autre (je débute en c# donc je connais pas tout) j'aimerai d'abord afficher entièrement le fichier et après trier et afficher que les lignes avec l'heure sélectionné si vous pouviez m'aidez je prend toute aide possible merci d'avance !

24 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
6 févr. 2020 à 12:10
Ha forcement si la date de début est après la date de fin, ça peut pas marcher.

Modifie ChargeFichier ainsi (j’ai tapé de tête sur mon iPad, j’espère ne pas avoir fait d’erreur de frappe).

        private void ChargerFichier()
        {
            string[] lignes = File.ReadAllLines("test.txt");//chaque ligne est chargée dans un emplacement de tableau

            foreach(string l in lignes)//on itère le tableau pour créer la liste de logs
            {
                Log leLog = Log.Parse(l);
                if (leLog != null)
                    lesLogs.Add(leLog);
                else
                    File.AppendAllText("LignesEnErreur.txt", l);//écrit les lignes rejetées dans le fichier LignesEnErreur.txt
            }
            lesLogs = lesLogs.OrderBy(x => x.Datation).ToList();
        }
0
Toujours pareil rien ne s'affiche cependant il boucle bien pour chaque ligne
0
hum.

Je te propose de mettre ton fichier sur un serveur de partage (cjoint, dropbox, google drive etc...) et soit de poster le lien ici soit de me l'envoyer en MP.
Pour le MP, il faut que tu t'inscrives et que je débloque mon compte, donc précise le sur le fil
0
DragZ_ Messages postés 6 Date d'inscription jeudi 6 février 2020 Statut Membre Dernière intervention 7 février 2020
6 févr. 2020 à 14:39
Je préfère te l'envoyer par mp si ça ne te gène pas
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
6 févr. 2020 à 15:57
Mon compte est débloqué.
Tu peux envoyer un MP
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
6 févr. 2020 à 23:14
Bon chez moi ça marche, ça pédale quelques secondes, j'ai 300Mo de RAM chargés.

J'en ai profité pour amélioré un peu l'affichage.

D'abord une classe supplémentaire
    class LogGroupe
    {
        public LogGroupe(IGrouping<string,Log> Groupe)
        {
            Key = Groupe.Key;
            Logs = Groupe.ToList();
        }
        public string Key { get; set; }

        public List<Log> Logs { get; set; }

        public int Occurence { get { return Logs.Count; } }

        public string Text { get { return string.Format("{0,-15}\t{1,7}\toccurence(s)", Key, Occurence); } }
    }


Puis les 2 méthodes suivantes sont modifiées
        private void DateTimePicher_ValueChanged(object sender, EventArgs e)
        {
            //les évènements ValueChanged de dtpDebut et dtpFin sont tous deux abonnées à cette méthode
            IEnumerable<Log> logsFiltres = lesLogs.Where(l => l.Datation >= dtpDebut.Value && l.Datation <= dtpFin.Value);//requête qui filtre les logs par date

            List<LogGroupe> logsGroupes = logsFiltres.GroupBy(l => l.Erreur).Select(g => new LogGroupe(g)).ToList();//regroupement des logs filtrés par erreur

            lbxErreurs.DataSource = null;
            lbxErreurs.DataSource = logsGroupes;
            lbxErreurs.DisplayMember = "Text";//les logs groupés sont affichés dans la listBox
        }

        private void lbxErreurs_SelectedIndexChanged(object sender, EventArgs e)
        {
            //L'évènement SelectIndexChanged de la listBox est abonné à cette méthode.
            if (lbxErreurs.SelectedIndex == -1)
                return;// rien n'est sélectionné => on sort

            ListBox lbx = sender as ListBox;
            LogGroupe logGroupe = lbx?.SelectedItem as LogGroupe;

            if (logGroupe == null)
                return; //Y'a un problème => on sort

            dgwLog.DataSource = null;
            dgwLog.DataSource = logGroupe.Logs;//on affiche les log dans le créneau horaire, avec l'erreur sélectionnée
        }



Projet complet https://www.dropbox.com/s/hsxm87vw4467mk9/Test%20Winform.zip?dl=0
0
DragZ_ Messages postés 6 Date d'inscription jeudi 6 février 2020 Statut Membre Dernière intervention 7 février 2020
7 févr. 2020 à 08:50
c'est génial merci beaucoup ça me fait une bonne base pour avancer ! Merci vraiment !
0
Rejoignez-nous