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 :

Dépacement d'index dans un TStringList


Sujet :

C++Builder

  1. #21
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    quand je lit dans le fichier j'ai dit que mes champs etait delimiter pas de ',' ex

    rapport,265,systeme exploitation, windows xp pro

    tous sa ca marche mais le probleme c'est quand je dit le 4eme champs sa devrais etre (windows xp pro) et non en faite c'est (exploitation) car en faite borland par defaut il doit metre les champs separateur ' ' espace et avec le mien sa fait espace et la virgule que moi je voudrais que la virgule tu comprend ...

  2. #22
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Oui, je comprend,
    pour cela tu peut essayer de remplacer DelimitedText par CommaText dans ton code mais ce n'est pas sur que ça fonctionne.
    Sinon il faut mettre ton texte entre chaque virgule entre guillement, donc faire en sorte que le texte
    Rapport,,,257,Version,AIDA32 v3.50
    Rapport,,,258,Auteur,fiery@aida32.hu
    Rapport,,,259,Site web,http://www.aida32.hu
    Rapport,,,260,Type de rapport,Générateur de rapports
    Rapport,,,261,Ordinateur,SECRÉTARIAT (claudine)
    Rapport,,,262,Générateur,demieres
    Rapport,,,263,Système d'exploitation,Microsoft Windows 98 4.10.2222A (Win98 SE)
    Rapport,,,264,Date,2003-06-06
    Rapport,,,265,Heure,11:51
    Résumé,,Ordinateur,513,Système d'exploitation,Microsoft Windows 98

    devienne"Rapport","","","257","Version","AIDA32 v3.50"
    "Rapport","","","258","Auteur","fiery@aida32.hu"
    "Rapport","","","259","Site web","http://www.aida32.hu"
    "Rapport","","","260","Type de rapport","Générateur de rapports"
    "Rapport","","","261","Ordinateur","SECRÉTARIAT (claudine)"
    "Rapport","","","262","Générateur","demieres"
    "Rapport","","","263","Système d'exploitation","Microsoft Windows 98 4.10.2222A (Win98 SE)"
    "Rapport","","","264","Date","2003-06-06"
    "Rapport","","","265","Heure","11:51"
    "Résumé","","Ordinateur","513","Système d'exploitation","Microsoft Windows 98
    "

  3. #23
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    ta seconde solutions n'est pas envisageable car il y a des milliers de ligne et de fichier texte

  4. #24
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Ça peut être fait facilement par programme

  5. #25
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    ta premier methode ne fonctionne pas je suis demoraliser j'en est vraiment besoins c'est le seul probleme et j'ai fini ce pu... de truc lol qui peut maider

  6. #26
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Avec ca ca devrait fonctionner :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    //Déclarations de variables
            int i,val1=-1;
            AnsiString pos,racine,utilisateur,ligne3,ligne4,enregistrer,rechercher;
            TStringList *file = new TStringList() ;
            TStringList *myStringList= new TStringList() ;
            TStringList *li = new TStringList() ;
    
            //Recuperation de la racine du fichier a enregistrer dans edit 6
            enregistrer=Edit5->Text;
    
            //Recuperation du nom d'utilisateur dans Edit4
            utilisateur=Edit3->Text;
    
            //Recuperation de la racine du fichier dans Edit2
            racine=Edit1->Text;
    
            //Lecture du fichier
            file->LoadFromFile( racine );
            for( i=0; i< file->Count; i++)
            {
                    //Lecture de chaque ligne
                    rechercher = file->Strings[i];
    
                    //Teste sur chaque ligne la valeur ,264,
                    if(rechercher.Pos(",264,"))
                    {
                           //Enregistre la valeur dans val1
                           val1=i;
                    }
            }
    
            //Recuperation de ligne selectionner
            if(val1 != -1)
            {
              ligne3 = file->Strings[val1] ;
              ligne4 = "";
              while(ligne3.Pos(",") != 0)
              {
                ligne4 += "\"";
                ligne4 += ligne3.SubString(1,ligne3.Pos(",")-1);
                ligne3.Delete(1,ligne3.Pos(","));
                ligne4 += "\",";
              } 
              if(ligne3.Length() != 0)
              {
                ligne4 += "\"";
                ligne4 += ligne3;
                ligne4 += "\"";
              }
    
              //Decoupage de la ligne a chaque virgule
              li->Delimiter = ',' ;
              li->DelimitedText = ligne4 ;
    
              if(li->Count > 5)
              {
                //Ouverture du fichier
                myStringList->LoadFromFile(enregistrer);
                //Ajout dans le fichier
                myStringList->Add(utilisateur+"," +li->Strings[5]);
    
                //Enregistre dans le fichier
                myStringList->SaveToFile( enregistrer ) ;
              }
            
            }
            //libérer les ressources
            delete myStringList ;
            delete li ;
            delete file ;
    En rouge les modification à apporter

  7. #27
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    tu es un boss mec mais quand tu as 5minute est ce que tu peux me mettre quelque commentaire quand je comprend pas trop ce que sa fait mais sa marche

  8. #28
    Expert confirmé

    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 : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Voici les commentaires :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    //Déclarations de variables
            int i,val1=-1;
            AnsiString pos,racine,utilisateur,ligne3,ligne4,enregistrer,rechercher;
            TStringList *file = new TStringList() ;
            TStringList *myStringList= new TStringList() ;
            TStringList *li = new TStringList() ;
     
            //Recuperation de la racine du fichier a enregistrer dans edit 6
            enregistrer=Edit5->Text;
     
            //Recuperation du nom d'utilisateur dans Edit4
            utilisateur=Edit3->Text;
     
            //Recuperation de la racine du fichier dans Edit2
            racine=Edit1->Text;
     
            //Lecture du fichier
            file->LoadFromFile( racine );
            for( i=0; i< file->Count; i++)
            {
                    //Lecture de chaque ligne
                    rechercher = file->Strings[i];
     
                    //Teste sur chaque ligne la valeur ,264,
                    if(rechercher.Pos(",264,"))
                    {
                           //Enregistre la valeur dans val1
                           val1=i;
                    }
            }
     
     
            if(val1 != -1)
            {
              //Recuperation de ligne selectionner
              ligne3 = file->Strings[val1] ;
               ligne4 = "";
     
              //Ajoute les guillemets autour de champs
              while(ligne3.Pos(",") != 0)
              {
                ligne4 += "\"";  //Ajout de la guillemet de début
                ligne4 += ligne3.SubString(1,ligne3.Pos(",")-1);  //Ajoute le premier champs qui figure dans ligne3
                ligne3.Delete(1,ligne3.Pos(","));  //supprime le premier champs qui vient d'être ajouté a ligne4 (le champs suivant prend alors la première place pour le passage suivant dans la boucle)
                ligne4 += "\",";  //Ajout de la guillement de fin
              } 
              //Ajoute les guillemets autour du dernier champs
              if(ligne3.Length() != 0)  //Si il rest un champs (pas de virgule derière le dernier champs, donc il n'est pas passé dans la boucle precedente)
              {
                ligne4 += "\"";  //Ajout guillemet debut
                ligne4 += ligne3;  //Ajout du dernier champs
                ligne4 += "\"";  //Ajout guillemet fin
              }
     
              //Decoupage de la ligne a chaque virgule
              li->Delimiter = ',' ;
              li->DelimitedText = ligne4 ;
     
              if(li->Count > 5)
              {
                //Ouverture du fichier
                myStringList->LoadFromFile(enregistrer);
                //Ajout dans le fichier
                myStringList->Add(utilisateur+"," +li->Strings[5]);
     
                //Enregistre dans le fichier
                myStringList->SaveToFile( enregistrer ) ;
              }
     
            }
            //libérer les ressources
            delete myStringList ;
            delete li ;
            delete file ;

  9. #29
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    un grand merci a toi

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/10/2005, 12h52
  2. A quoi servent les index dans une BDD ?
    Par Melvine dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/10/2005, 12h14
  3. mise a zéro de la clé d'index dans une table
    Par Atchoum_002 dans le forum Access
    Réponses: 2
    Dernier message: 19/09/2005, 15h34
  4. Récupération d'index dans DBLookupControl ?
    Par Michel D. dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/06/2004, 15h01

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