IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Traiter les dernières données d'une liste


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Par défaut Traiter les dernières données d'une liste
    Bonjour, Je travaille sur l'analyse du contenu d'un tchat afin d'analyser chaque lignes automatiquement.
    Grace aux handle j'arrive a récupérer la dernière ligne ( la plus récente a que fois) et de la traiter

    actuellement j'ai ma fonction "derniere_ligne()" lancée dans un thread qui récupère et traite la ligne. cela fonctionne assez bien


    Le problème est quand l'activité du tchat est intense certaines lignes ne sont pas analysées!

    Du coup je récupère les 5 dernières lignes au lieu de la dernière seulement.

    Les 5 dernières lignes sont dans une list mais on peut les mettre dans un autre type.


    Admettons que les 5 dernières lignes capturées soient

    (1)Arrivée : xxxxx
    (2)Arrivée : yyyyy
    (3)xxxx : salut
    (4)Sortie : zzzzz
    (5)Sortie : vvvvv

    ma question est comment analyser totalement les 5 dernières lignes (1)(2)(3)(4)(5) qu'une seule fois sachant qu'à la prochaine capture ce sera par exemple

    (1)Sortie : zzzzz
    (2)Sortie : vvvvv
    (3)xxxx : allo
    (4)xxxx : ya qqun
    (5)oooo : oui

    il faudra analyser que les messages (3)(4)(5)

    en cas d’inactivité on envoie que la dernière ligne (5), comme c'est la même que la précédente elle sera ignorée par ma fonction de traitement.

    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 455
    Par défaut
    Bonjour,
    Plutôt que de chercher les n dernières lignes, ton besoin est de chercher les lignes non traitées.
    L'idéal serait donc d'ajouter un booléen pour chaque ligne, qui indique si la ligne est traitée ou pas.
    Maintenant tu ne nous dis pas comment sont récupérées les lignes, donc difficile de savoir si cette option est possible ou pas.

    Autre solution, si tu peux récupérer les ligne "au fil de l'eau", par exemple via un événement: les mettre dans une file, et traiter cette file.

    Tatayo.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 20
    Par défaut
    Voici comment sont récupéré et traité actuellement la derniere ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    //form1 onload
     
    Thread myThread;
                myThread = new Thread(new ThreadStart(Recuperer_derniere_ligne));
                myThread.Start();
     
     private void Recuperer_derniere_ligne()
     
            {
         var document = DocumentFromDOM(new IntPtr(int.Parse(_hControl_chat.ToString())));
     
                while (Thread.CurrentThread.IsAlive)
                {
     
              if (document != null)
                            {
     
                                RichTextBox ContenuCompletChat_RichTextBox = new RichTextBox();
                                ContenuCompletChat_RichTextBox.Text = document.body.outerText;
                                lastlinebas = ContenuCompletChat_RichTextBox.Lines[ContenuCompletChat_RichTextBox.Lines.Count() - 2];
     
     
                                if (lastlinebas != Dernierelignetraitee)
                                {
                               Dernierelignetraitee = lastlinebas;
                                       //traitement
                                 }
                            }
                  }
          }
    }

    Dans le cas des 5 dernieres lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    //form1 onload
     
    Thread myThread;
                myThread = new Thread(new ThreadStart(Recuperer_derniere_ligne));
                myThread.Start();
     
     private void Recuperer_derniere_ligne()
     
            {
         var document = DocumentFromDOM(new IntPtr(int.Parse(_hControl_chat.ToString())));
     
                while (Thread.CurrentThread.IsAlive)
                {
     
              if (document != null)
                            {
     
                                RichTextBox ContenuCompletChat_RichTextBox = new RichTextBox();
                                ContenuCompletChat_RichTextBox.Text = document.body.outerText;
     
                               string[] txtlst = ContenuCompletChat_RichTextBox.Text.Split(new char[] { '\r', '\n' });
     
                                                       for (int i = ListDernieresLignesDuTchat.Count() - 5; i <= ListDernieresLignesDuTchat.Count(); i++)
                                                        {
                                                            try
                                                            {
                                                                if (ListDernieresLignesDuTchat[i].Trim() != "")
     
                                                                    ListxxxDernieresLignesDuTchat.Add(ListDernieresLignesDuTchat[i]);
     
                                                            }
                                                            catch
                                                            {
     
                                                            }
     
                                                        }
     
                              ///////////
     
    // ?? traitement des lignes //
    /////////
                            }
                  }
          }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/06/2007, 11h08
  2. Comment transférer les données d'une liste de choix ?
    Par rachid31 dans le forum Langage
    Réponses: 4
    Dernier message: 06/04/2007, 13h35
  3. Afficher les données d'une Liste multicolonne dans CrystalReport
    Par NAIMA2 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/04/2007, 10h59
  4. Récupérer les données d'une liste dans un $_POST
    Par Sangdrax1604 dans le forum Langage
    Réponses: 4
    Dernier message: 19/10/2006, 10h55
  5. Récuperer les données d'une liste de valeurs
    Par Pitou5464 dans le forum Access
    Réponses: 3
    Dernier message: 11/08/2006, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo