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

MFC Discussion :

Extraire des données d'un Fichier .csv


Sujet :

MFC

  1. #21
    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
    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

  2. #22
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    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?

  3. #23
    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
    Sacré inefficacité ! C'est pour savoir quelle solution peut être la plus pertinente que je te poses ces quelques questions.

  4. #24
    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
    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

  5. #25
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Excuse moi mais tu dis
    Sacré inefficacité !
    pour moi ou pour le programme???

    En tous cas merci pour ton aide je testerais ta solution!!!

  6. #26
    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 wolverine1987 Voir le message
    Excuse moi mais tu dis pour moi ou pour le programme???

    En tous cas merci pour ton aide je testerais ta solution!!!
    Je ne me serais pas permis. Je parle bien du programme : charger 60 000 lignes pour en afficher 14

  7. #27
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    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.

    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
    j'ai indiquer les erreurs par des numéros!

  8. #28
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CString const *p_courant(&(listeilot[1]));

  9. #29
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    mêmes erreurs!!!

  10. #30
    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
    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];

  11. #31
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Tu m'as bien dit que listeilot est définie comme suit :

    Code :
    CString listeilot[80000];
    oui, mais j'ai modifier le programme en fonction de le variable que tu a crée.(nbr_ilots)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const int nbr_ilots = 60000;
    CString listeilot[nbr_ilots];

  12. #32
    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
    Peux-tu mettre l'intégralité de la fonction telle que tu l'as recopiée ?

  13. #33
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    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*/
    }

  14. #34
    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
    Visiblement le const ne fonctionne pas avec MakeLower :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CString *p_courant(&(listeilot[1])); // éléments courant
    Mais, ça change la sémantique . (éventuellement, vérifies l'état des chaînes de listeilot après).

  15. #35
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Moi pas comprendre?

  16. #36
    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
    Enlève le const dans la déclaration de p_courant car MakeLower nécessite que l'objet ne soit pas const.

  17. #37
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Ca ne change rien j'obtient toujours les mêmes erreurs!!!

  18. #38
    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 wolverine1987 Voir le message
    Ca ne change rien j'obtient toujours les mêmes erreurs!!!
    Bizarre. Chez moi ça compile. Mais j'ai pas un VC6 ...

  19. #39
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Ok merci je vais éssayer de faire autrement!!!

  20. #40
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_valueCtrlIlot.DeleteString(n);
    n correspond au numero de la ligne que l'on veux supprimer!
    Que pensez vous de cette solution?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [PEAR] Extraire des données d'un fichier CSV pour en faire un PDF
    Par kleyde89 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/05/2011, 10h16
  2. [Batch] Extraire des données d'un fichier CSV
    Par soufianekh dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 27/10/2009, 13h34
  3. Extraire des données d'un fichier .csv avec C++
    Par cre31400 dans le forum C++Builder
    Réponses: 14
    Dernier message: 08/07/2008, 10h25
  4. Extraire des données dans un fichier .csv
    Par orj30754 dans le forum C
    Réponses: 7
    Dernier message: 03/11/2006, 14h48
  5. Réponses: 7
    Dernier message: 29/09/2005, 10h19

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