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 :

Lecture d'un fichier


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut Lecture d'un fichier
    Bonjour,

    Je doit renplacer un programme qui converti des données pour un autre programme.

    Je doit travailler sur des fichiers, style fichier text.
    Je me suis souvenu mes vieu cour de c, et j'ai taper sa pour commancer/tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FILE *f;
    char ligne[256];
    f=fopen("S1.IRM","r");
    fread(&ligne,sizeof ligne,1,f);
    fclose(f);
    Label1->Caption=ligne;
    J'ai bien sur rajouter au début un include stdio.h

    Mon programme compile bien, mais lorsqu'il exécute la ligne du fread il plante :
    Le projet meteo.exe à déclanché la classe d'Exception EAccessViolation avec le message 'Violation d'accès à l'adresse 3286ED28 dans le module 'CC3280MT.DLL'. Lecture de l'adresse F832F7FC
    Si je mes la ligne du fread en commentaire, le programme tourne.

    J'ai dut oublier un petit détaille depuis le temps.

  2. #2
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    comment est la structure de ton fichier texte ?
    As-tu différentes valeurs sur une ligne ?

    Tu peux charger le contenu de ton fichier dans un TStringList

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TStringList *Fichier = new TStringList();
    Fichier->LoadFromFile("S1.IRM");
    Et ainsi avoir acccès à chaque ligne de ton fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // On parcourt le fichier
    for(int i = 0; i < Fichier->Count; i++)
    {
        // affichage de la ligne i
        ShowMessage(Fichier->Strings[i]);
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    D'abort merci.
    J'arrive à lire les ligne de mon fichier.
    S'est vrais que le fopen doit commencer à dater.
    Pour répondre à tes question, j'ai un enregistrement par ligne, mais avec plusieur valleur à la suite. Voici pour exemple 2 ligne du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    80401032006 81   181   185   175   178   185   193   164   174   169   154   163   161   159   151   171   166   171   192   184   173   167   169   152   152   171   158   171   159   158   166   167
    80501032006 81     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
    Mais maintenat que je sais avoire les valeur dans une variable, je vais savoire me démerder pour extraire se que j'ai besoin dans se fichier (je doit juste relire la date du dernier enregistrement)

    Par contre je vais devoire rajouter des lignes à la fin de se fichier, avec la même structure.
    Si vous pouver donc m'indiquer commen faire l'opération inverse. Sa me rendrait service.

  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je te demandais la Structure de ton fichier pour t'aider à en extraire le contenu mais je vois que tu ten sort donc c'est tou bon.

    il n'y a pas malheureusement de fonction SaveToFile pour un TStringList

    Moi je passe par un TMemo pour sauvegarder dans un fichier mais peut être qu'il y à plus simple

    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 *Fichier = new TStringList();
    Fichier->LoadFromFile("S1.IRM");
     
    .......
     
    // Création du Memo
    TMemo *Memo = new TMemo(Form);
     
    // On balaye le TStringList
    for(int i = 0; i < Fichier->Count; i++)
    {
       // Ajout de la ligne dans le Memo
       Memo->Lines->Add(Fichier->Strings[i]);
    }
     
    // Enregistrement du fichier
    Memo->Lines->SaveToFile("S1.IRM");

  5. #5
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Citation Envoyé par kurul1 Voir le message
    il n'y a pas malheureusement de fonction SaveToFile pour un TStringList
    TStringList étant un enfant de TStrings, il possède une méthode SaveToFile (en tout cas sous BCB6).

  6. #6
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je suis bète des fois, je sais pas pourquoi. Ca me paraissait bisard qu'il y est la méthode pour charger et pas celle pour sauver.

    Merci à toi bakaneko

    Donc après correction, pour sauver ta TStringList dans un fichier


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fichier->SaveToFile("S1.IRM");
    Dsl pour avoir raconté des anneries

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 128
    Par défaut
    Merci beaucoup du coups de main.

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

Discussions similaires

  1. Lecture d'un fichier .dbf
    Par San Soussy dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 07/07/2004, 16h30
  2. Réponses: 6
    Dernier message: 02/09/2003, 15h12
  3. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2003, 08h54
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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