Tu lis 60000 entrées et tu veux n'en mettre que 14 dans ta combo ? Ou ton tableau de 60000 entrées ne contient que 14 entrées valides![]()
Tu lis 60000 entrées et tu veux n'en mettre que 14 dans ta combo ? Ou ton tableau de 60000 entrées ne contient que 14 entrées valides![]()
Je lis les 60000 entrées de mon tableau, et il y a des données qui se répètent donc je ne veux les voir qu'une seule fois dans ma combobox!!!! donc en fait j'affiche que 14 entrées!!! Comprend tu?
Sacré inefficacité ! C'est pour savoir quelle solution peut être la plus pertinente que je te poses ces quelques questions.
A la volé, donc à ajuster ci-besoin :
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 /* Hypothèses : const int nbr_ilots = 60000; String listeilot[nbr_ilots]; */ CStringList lst_inserees; // liste des éléments déjà insérés dans la combo m_valueCtrlIlot.InsertString(0,listeilot[0]); // on insert dans la ComboBox le nom du premier ilot CString const *p_courant(&listeilot[1]); // éléments courant for(int i_courant=1;i_courant<nbr_ilots;++i_courant,++p_courant) { if( (p_courant->MakeLower().Find(_T("nantes"))>=0) // la condition : on recherche 'nantes' comme sous chaines de 'ilot nantes' ){ if(lst_inserees.Find(p_courant->MakeLower())==NULL){// si on ne l'a pas déjà insérée m_valueCtrlIlot.AddString(*p_courant);// on la rajoute au controle lst_inserees.AddTail(p_courant->MakeLower());// on la rajoute à la liste des éléments insérés } } } m_valueCtrlIlot.SetCurSel(4); // Met l'îlot GE-CDS par défaut au lancement de l'appli
Excuse moi mais tu dispour moi ou pour le programme???Sacré inefficacité !
En tous cas merci pour ton aide je testerais ta solution!!!
j'ai testé ton bout de programme mais j'ai pas mal d'erreur!!! si tu peut jeter un coup d'oeil à ces erreurs car je ne comprend pas!!!
(1)error C2059: syntax error : '&'
(2)error C2105: '++' needs l-value
(3)warning C4550:expression evaluates to a function which is missing an argument list
(4)warning C4550: expression evaluates to a function which is missing an argument list
(5)error C2227: left of '->MakeLower' must point to class/struct/union
(6)error C2228: left of '.Find' must have class/struct/union type
(7)error C2227: left of '->MakeLower' must point to class/struct/union
(8)error C2664: 'AddString' : cannot convert parameter 1 from 'const class CString *(void)' to 'const char *'
There is no context in which this conversion is possible
(9)error C2227: left of '->MakeLower' must point to class/struct/union
Error executing cl.exe.
j'ai indiquer les erreurs par des numéros!
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 CStringList lst_inserees; // liste des éléments déjà insérés dans la combo m_valueCtrlIlot.InsertString(0,listeilot[0]); // on insert dans la ComboBox le nom du premier ilot (1)CString const *p_courant(&listeilot[1]); // éléments courant (2,3,4)for(int i_courant=1;i_courant<nbr_ilots;++i_courant,++p_courant) { if( (5,6)(p_courant->MakeLower().Find(_T("nantes"))>=0) // la condition : on recherche 'nantes' comme sous chaines de 'ilot nantes' ){ (7)if(lst_inserees.Find(p_courant->MakeLower())==NULL){// si on ne l'a pas déjà insérée (8)m_valueCtrlIlot.AddString(*p_courant);// on la rajoute au controle (9)lst_inserees.AddTail(p_courant->MakeLower());// on la rajoute à la liste des éléments insérés } } } m_valueCtrlIlot.SetCurSel(4); // Met l'îlot GE-CDS par défaut au lancement de l'appli
Code : Sélectionner tout - Visualiser dans une fenêtre à part CString const *p_courant(&(listeilot[1]));
mêmes erreurs!!!![]()
Tu m'as bien dit que listeilot est définie comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CString listeilot[80000];
oui, mais j'ai modifier le programme en fonction de le variable que tu a crée.(nbr_ilots)Tu m'as bien dit que listeilot est définie comme suit :
Code :
CString listeilot[80000];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const int nbr_ilots = 60000; CString listeilot[nbr_ilots];
Peux-tu mettre l'intégralité de la fonction telle que tu l'as recopiée ?
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 void CChoixIlot::OnSelchangeCombochoixdusite() { if (m_valueCtrlSite.GetCurSel() == 0) // Si on sélectionne le site de nantes { m_valueCtrlType.EnableWindow(TRUE); CStringList lst_inserees; // liste des éléments déjà insérés dans la combo m_valueCtrlIlot.InsertString(0,listeilot[0]); // on insert dans la ComboBox le nom du premier ilot CString const *p_courant(&(listeilot[1])); // éléments courant for(int i_courant=1;i_courant<nbr_ilots;++i_courant,++p_courant) { if( (p_courant->MakeLower().Find(_T("nantes"))>=0) // la condition : on recherche 'nantes' comme sous chaines de 'ilot nantes' ){ if(lst_inserees.Find(p_courant->MakeLower())==NULL){// si on ne l'a pas déjà insérée m_valueCtrlIlot.AddString(*p_courant);// on la rajoute au controle lst_inserees.AddTail(p_courant->MakeLower());// on la rajoute à la liste des éléments insérés } } } m_valueCtrlIlot.SetCurSel(4); // Met l'îlot GE-CDS par défaut au lancement de l'appli*/ }
Visiblement le const ne fonctionne pas avec MakeLower :
Mais, ça change la sémantique
Code : Sélectionner tout - Visualiser dans une fenêtre à part CString *p_courant(&(listeilot[1])); // éléments courant. (éventuellement, vérifies l'état des chaînes de listeilot après).
Moi pas comprendre?
Enlève le const dans la déclaration de p_courant car MakeLower nécessite que l'objet ne soit pas const.
Ca ne change rien j'obtient toujours les mêmes erreurs!!!![]()
Ok merci je vais éssayer de faire autrement!!!
J'ai peut-être trouvé une autre solution!!
je rappel mon problème : j'affiche dans une combobx tous les noms d'ilots Nantes paris laval.. que je vais cherché dans mon fichier .csv. Mon but est de mettre que les ilots de nantes donc dans mon programme je vais donc supprimer les lignes qui ne m'intéressent pas en faisant :n correspond au numero de la ligne que l'on veux supprimer!
Code : Sélectionner tout - Visualiser dans une fenêtre à part m_valueCtrlIlot.DeleteString(n);
Que pensez vous de cette solution?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager