Help multiple find dans une list

Signaler
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004
-
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004
-
j'ai essayer de faire un recherche dans une liste mais malheureusement il s'arrete a la premiere occurence trouver, alors que je voudrais faire un rechercher le suivant. Donc j'ai fait ce petit bout de code mais malheureusement il saute des reponses.Et je n'arrive pas a comprendre pourquoi surtout que la variable qui devrait contenir la place de l'occurence me donne de drole d'info comme 21 pour la premiere item.

CString s_pattern;
    m_e_host.GetWindowText( s_pattern );
    s_pattern.MakeLower();
for(int j=0; j<m_list.GetItemCount();j++ )
    {
if (m_list.GetItemState  (j, LVIS_SELECTED)==LVIS_SELECTED)
m_list.SetItemState  (j,0, LVIS_SELECTED);
        CString s,s1,s2;
        s1 = m_list.GetItemText( j, 0 );//ip
        s2 = m_list.GetItemText( j, 1 );//comments
        s.Format("%s#%s",s1,s2);
        s.MakeLower();
if ( s.Find(s_pattern,iStart)!=-1 )
{
m_list.EnsureVisible( j, false );
            m_list.SetItemState( j, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED );
            m_list.SetFocus();
int n = s.Find ( s_pattern, iStart );
iStart = ++n;
char buf[10];//récepteur assez large
sprintf(buf, "%d", (iStart));//et buf contient le texte
printf("%s\n",buf);
m_status_line.SetWindowText(buf);
return;
        }

6 réponses

Messages postés
117
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
24 avril 2006

Sa a lair des MFC sa....alors tu peut faire comme sa

CListBox m_list;
CString chaine;

....tu remplis la listbox

int count = m_list.GetCount()

for(int x = 0; x < count; x++)
{
m_list.GetText(x, chaine);
if(strcmp(chaine.GetBuffer(0), "la chaine que tu veux trouver")
.......fais se que tu veux......

}
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004

oui mais pkoi ne pas utiliser la methode find des cstring et le probleme vient du fait que je veux chercher dans 2 list en meme temps definie ici s1 = m_list.GetItemText( j, 0 );//ip
s2 = m_list.GetItemText( j, 1 );//comments

et je n'ai pas de probleme pour rechercher mias seulement pour trouver la prochaine occurence. Car soit je reste bloqué sur la premiere occurence ou alors il zap des reponses et j'aimerais bien savoir pkoi
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004

et j'utilise un clistctrl
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004

et j'aurai aussi penser a utiliser la fonction finditem des control list, ce qui m'aurait eviter les ennuie que j'ai. Mis apparement il ne cherche que dans une list
Messages postés
117
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
24 avril 2006

Ben premierement tu peux pas utiliser la fonction find des CString pcq un CString c'est pas une liste, tu veux chercher dans une liste ou pas??? le find des CString cest pour chercher par exemple un caractere dans ta chaine, c'est p-e pour sa que sa marche pas
Messages postés
12
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
22 avril 2004

oui mais qua j'utilise la fonction finditem des control list il ne cherche pas dans ma dexuieme colonne mais seulement dans la premiere c'est pour cela que je charge toutes les colonnes dans un CString pour ensuite faire une recherche

j'espere que je me fait comprendre