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++Builder Discussion :

problème parsing csv


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut problème parsing csv
    bonjour,
    je sais que le problème a été déja posé mais:
    dans mon fichier csv les données sont séparé par des tabulatiosn, donc je ne sais pas quoi faire dans le séparateur de la fonction qui m'a été déja donnée par Sat83.

    voici une capture de mon fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Cluster 1                  Score:1.66                           P_value
                                       Cellular differentiation        8.1E-3
                                       ProcessA                               7.6E-3
    ....
    ....
    Cluster 2                  Score:1.43                            P_value
                                        amine metabolic                4.5E-1
    ...
    ...

    merci de votre aides.

    Rq:

    La fonction proposée par Sat83 est: ( sachant que le séparateur est la virgule)

    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
     
    StringList *fichier = new TStringList();
    fichier->LoadFromFile( "file.csv" ) ;
     
      TStringList *ligne ;
      for( int i=0; i< fichier->Count; i++ )
     
      {
    	ligne = new TStringList() ;
    	ligne->Text = StringReplace(fichier->Strings[i], ';' , "\n", TReplaceFlags()<< rfReplaceAll );
    	Savecount=ligne->Count ;
    	for(int j=0; j < ligne->Count; j++)
     
    	{
    	  //....... traiter ()
     
    	}
    	delete ligne ;
      }
      delete fichier ;
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Salut,
    je dirai plus que le séparateur de ta fonction est le point virgule

    sinon le caractère tabulation est '\t'
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    salut poittiez,
    merci pour la réponse,
    j'ai déja essayé le '\t' mais mon programme entre dans une boucle infinie!!!
    une idée?
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Il faudrait savoir quel boucle est infini (j'en vois deux dans le code présenté) et connaitre le traitement total que fait la boucle
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    ok,
    voici la fonction telle qu'elle est dans mon projet,

    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
     
    // matching des clusters.
     
    int RowCount; AnsiString ligne ;
    TStringList *fichier = new TStringList();
    fichier->LoadFromFile(File_name ) ;
      RowCount = fichier->Count ;
      ShowMessage(String(RowCount));//nbre lignes
      for( int j=0; j< RowCount; j++ )
     
      {    ligne=fichier->Strings[j];
     
           TStringList *tocken=new TStringList();
           tocken->Text=  StringReplace( ligne,'\t', "\n",TReplaceFlags()<<rfReplaceAll);
           AnsiString result="";
           ShowMessage(   tocken->Count);//nbre mot dans la ligne j
           int i=0;
           while(i< tocken->Count){
           result=tocken->Strings[i];
           result.Trim();
           ShowMessage(result);//tocker i
           // ----ici je vais implémenter une fonction matching
                }// while
     
            delete tocken;
             }
      delete fichier ;
     
    ShowMessage("Mattching");

    le fichier à parser est en pièce jointe.

    merci d'avance
    Fichiers attachés Fichiers attachés
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  6. #6
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Dans ta boucle while tu as oublié d'incrémenter ta variable i
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    merci infiiiiiiiiniment pottiez
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

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

Discussions similaires

  1. [PHP 5.3] Problème curieux de parsing .csv
    Par aurelien22 dans le forum Langage
    Réponses: 12
    Dernier message: 27/01/2012, 12h21
  2. [JAXB] Problème parsing XML avec XSD validant
    Par vano dans le forum Persistance des données
    Réponses: 2
    Dernier message: 26/08/2008, 09h59
  3. Problème parsing xml
    Par eidole62 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 14/08/2008, 13h11
  4. Réponses: 9
    Dernier message: 06/12/2006, 00h41
  5. [CSV] Problème avec CSV et point virgules
    Par Lotz dans le forum Langage
    Réponses: 6
    Dernier message: 09/03/2006, 15h11

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