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 :

Lire des champs dans une fichier texte


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut Lire des champs dans une fichier texte
    Bonjours tous le monde je vous explique mon petit probleme.

    Je doit realiser un petit programme qui me permet de lire dans un fichier en selectionnant certains champs sur differente ligne séparrer par des ',' et les copiers dans un autre fichier. La copie de c'est champs doit etre toujours separer par une ',' et chaque ligne copier doit etre mit a la ligne sur le nouveau fichier.

    exemple du fichier:

    Rapport,Mornas
    Rapport,,,263,Système d'exploitation,Microsoft Windows 2000 Professional
    Rapport,,,264,Date,2003-05-30
    Rapport,,,265,Heure,14:41
    Résumé,,Ordinateur,513,Système d'exploitation,Microsoft Windows 2000 Professional
    Résumé,,Ordinateur,540,Service Pack du système,Service Pack 3
    Résumé,,Ordinateur,564,Internet Explorer,6
    Résumé,,Ordinateur,566,DirectX,4.07.00.0700 (DirectX 7.0)
    Résumé,,Ordinateur,514,Nom du système,PLANNING
    Résumé,,Ordinateur,515,Nom d'utilisateur,PLANNING

    Je vous montre exemple ce que je voudrais en rouge

    Voila donc avoir en resultat

    Mornas,Système d'exploitation,Microsoft Windows 2000 Professional,Service Pack 3,Internet Explorer

    Merci je compte sur vous

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Bonjour, je n'ai pas C++ Builder sous la main, donc je fais ça de mémoire mais ca devrait etre correct :

    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
       TStringList *file = new TStringList() ;
    //lire le fichier
       file->LoadFromFile( "C:\\MonDossier\\MonFichier.txt" );
     
    //recuperer la 3ème ligne du fichier
       AnsiString ligne3 = file->Strings[2] ;
     
       TStringList *ligne = new TStringList() ;
    //decouper la ligne a chaque virgule
       ligne->Delimiter = ',' ;
       ligne->DelimitedText = ligne3 ;
     
    //afficher le 5ème élement de la 3ème ligne
       ShowMessage( ligne->Strings[4] ) ;
     
    //libérer les ressources
       delete ligne ;
       delete file ;
    En esperant que ca te sera utile

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Sa mes vraiment utile mais juste une truc il me faudrait une commande pour que je puise aussi enregistrer dans une fichier texte a la suite de chaque champs qui minteresse comme l'exemple que j'ai marquer et aussi quand je lit un fichier different pour mettre les informations une ligne en dessous et faire la meme chose

    Merci d'avance

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    et encore un truc stp voila il y a un petit souci je te montre

    Résumé,,Carte mère,520,Mémoire système,256 Mo (PC133 SDRAM)

    Je voudrais extraire 256 Mo (PC133 SDRAM)
    il faut que je face cette ligne mais on dirai que les seperateurs ne foncionne pas bien

    ShowMessage( ligne->Strings[7]+ligne->Strings[8]+ ligne->Strings[9]+ligne->Strings[10]);

    donc si tu peux m'aider aussi

    Merci

  5. #5
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Edit : correction de la fonction FindToken (elle fonctionnait avant, mais une ressource n'était pas libérée!)


    Je pense que tu as tous les éléments pour faire ce que tu veux faire, en sachant encore que pour enregistrer un TStringList dans un fichier tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myStringList->SaveToFile( "C:\\monfichier.txt" ) ;
    Essai de faire des fonctions réutilisable, en voici une pour récupérer le n-ième élement d'une AnsiString :

    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
    AnsiString FindToken( AnsiString aSource, int aPosition, char aDelimiter )
    {
    /*
    aSource : la chaîne de caractère à découper
    aPosition: l'élément dans la chaîne que tu veux récupérer
    aDelimiter: le caractère de séparation
    */
      TStringList *tokenizer = new TStringList() ;
      tokenizer->Text = StringReplace(aSource, aDelimiter , "\n", TReplaceFlags()<< rfReplaceAll );
     
      AnsiString resultat = "" ;
      if( aPosition < tokenizer->Count )
        resultat = tokenizer->Strings[ aPosition ] ;
      delete tokenizer ;
      return( resultat );
    }
    PS : en passant, ca montre une autre methode pour decouper une string que celle que je t'avais donné dans mon premier post

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Je suis désolé de de dire sa mes ce code ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myStringList->SaveToFile( "C:\\monfichier.txt" ) ;
    Je fais comment

  7. #7
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Citation Envoyé par darkman13130 Voir le message
    Je suis désolé de de dire sa mes ce code ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myStringList->SaveToFile( "C:\\monfichier.txt" ) ;
    Je fais comment
    Ca ne marche pas? As tu déclarer au moins le TStringList?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TStringList *myStringList= new TStringList() ;
    //[...]
    // tu remplis comme tu veux chaque ligne (chaque élement du TStringList correspondra a une ligne du fichier)
    //[...]
    myStringList->SaveToFile( "D:\\SaveFile.txt" ) ;
    delete myStringList ;

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne->Delimiter = ',' ;
    Avec cette commande le separateur marche tres bien mais les espace conte pour lui comme un separateur et moi je veux pas car j'ai des phrases ex Systeme d'exploitation et il me prend que Systeme

    comment je peut remedier a sa et faire la sauvegarde sur un fichier et j'orai eu tous ce que je vouler

    Merci bonne journée

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

Discussions similaires

  1. Lire des données dans un fichier texte
    Par snakeisland dans le forum LabVIEW
    Réponses: 4
    Dernier message: 05/02/2014, 09h35
  2. Lire des ints dans un fichier texte avec java.io
    Par Vcouprie dans le forum Général Java
    Réponses: 1
    Dernier message: 07/02/2013, 20h01
  3. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h04
  4. INSERER DU TEXTE AVEC DES CHAMPS DANS UNE REQUETE SUR sql Srv 2000
    Par sauceaupistou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/03/2007, 10h02
  5. Lire et ecrire des variables dans un fichier texte
    Par Lynecoln dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/02/2007, 14h16

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