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

wxWidgets Discussion :

Problèmes d'affichage de nombreuses lignes dans un wxTextCtrl


Sujet :

wxWidgets

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut Problèmes d'affichage de nombreuses lignes dans un wxTextCtrl
    Bonjour,

    Nouveau en programmation, j'ai un petit problème concernant l'affichage de nombreuses lignes dans un wxTextCtrl.

    Une partie de mon projet consiste à ouvrir un fichier texte, rechercher ligne par ligne une expression et à afficher la ligne si elle contient l'expression recherchée.

    Pas de problème pour l'ouverture et la recherche mais à dès que plusieurs centaines de lignes sont trouvées l'affichage du wxtextCtrl se fige.
    Cela ne me bloque pas l'application, juste ca ne m'affiche pas toutes les lignes.

    J'ai essayé de 2 manières différentes.
    1- J'affiche les lignes à fur et à mesure qu'elle sont trouvées
    2- Je stock les lignes dans un wxArrayString et je le vide aprés

    Les 2 manières ne fonctionnent pas.

    Je me suis dis que cela pouvais venir du stockage des lignes dans les variables mais non si je le fais dans une console (sans wxwidgets hé hé) ca marche impec. Cela doit surement provenir du wxTextCtrl.

    J'ai vraiment besoin d'un petit coup de main



    Voila mon bout de code
    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
    if ( file.Open() )
               {
                  wxArrayString temporaire;
                  for ( wxString p = file.GetFirstLine(); !file.Eof(); p = file.GetNextLine() )
                  {
                      int index = p.Find(Masque);
                      if  (index > -1)
                      {
                          temporaire.Add(p);
                      }
                  }
                 for(size_t i=0; i < temporaire.GetCount(); ++i)
                 {
                      TextInfo->AppendText(temporaire[i]);
                      TextInfo->AppendText(_T("\n"));
                      }

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Mon premier réflexe serait d'ajouter toutes les lignes d'un coup. En reprenant ton code, ce serait quelque chose voisin de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ( file.Open() )
    {
       wxString strResultat;
       for ( wxString p = file.GetFirstLine(); !file.Eof(); p = file.GetNextLine() )
       {
          int index = p.Find(Masque);
          if  (index > -1)
          {
             strResultat += p + wxT("\n");
          }
       }
       TextInfo->AppendText(strResultat);
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse mais ca réagi pareil.

    En fait sur un petit fichier ou si la recherche ne donne que quelques lignes ca fonctionne impec et à la fin du traitement j'affiche "traitement terminé"

    Ici le traitement s'arrête en plein milieu d'une ligne, ca mouline un peu et je peux reprendre la main.

    Je joins 2 images pour illustrer mes explications.

    Au fait je travail sous windows XP avec DevC++ 4.9.9.2 et wxwidgets 2.6.1.
    Images attachées Images attachées   

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Si ton fichier est vraiment important, à ce moment, peut être faut-il réfléchir à séparer en 2 threads : le thread principal garde la gestion de l'interface, et un thread dédié est créé pour lire le fichier et envoyer les lignes lues au thread principal. Pour ne pas faire trop d'envoi, peut-être regrouper les lignes par groupe de 100 (ou 1000 ou 10 000 à tester ce qui est satisfaisant pour toi).
    Après tu peux essayer avec un wxRichTextCtrl pour voir si les performances sont meilleures.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Merci pour les renseignements.

    Bizarre que ce wxTextCtrl foire avec un trop grand nombre de ligne, vais voir si y'a pas une mauvaise manip de ma part.

    Vais regarder aussi les threads mais ca m'a pas l'air très simple

    Encore merci pour tout (si tu a une autre suggestion je suis prenneurs) hé hé

  6. #6
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello

    J'ai eut récemment des soucis avec l'insertion d'une grande quantité de texte dans un wxTextCtrl : toutes les données n'étaient pas insérées.

    Après avoir pas mal galéré pour en trouver la cause, je me suis aperçu que le problème venait du fait qu'un wxTextCtrl sous Windows était limité.

    Pour le résoudre, il suffit de lui donner le style wxTE_RICH, et là, plus de problème.

    @+
    Xav'

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par wxXav Voir le message
    Pour le résoudre, il suffit de lui donner le style wxTE_RICH, et là, plus de problème.

    @+
    Xav'
    Ca fonctionne impécable, Merci beaucoup pour l'astuce Xav'.

    Par contre je ne sais pas comment mettre [RESOLU] dans le sujet du post.

    Encore mille fois merci.
    @+

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par darksteph Voir le message
    Par contre je ne sais pas comment mettre [RESOLU] dans le sujet du post.
    Le bouton en bas de la discussion (je l'ai fait tant que j'y étais)

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

Discussions similaires

  1. [Affichage] Saut de ligne dans une cellule de tableau
    Par pc.bertineau dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 19/02/2007, 09h54
  2. Réponses: 15
    Dernier message: 04/01/2007, 08h47
  3. [C#] Problème d'ajout d'une ligne dans une DataTable
    Par therock dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/11/2006, 08h27
  4. [SQL] Problème d'affichage de caractère spéciaux dans une variable chaîne
    Par Kryptonaute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/08/2006, 08h40
  5. Problème d 'affichage d une grile dans un JLabel
    Par louby dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/06/2006, 15h56

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