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 de lecture fichier avec std::getline


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut Problème de lecture fichier avec std::getline
    Salut,

    J'essaye de lire un fichier texte ligne par ligne. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::ifstream fichier("C:\\recup.ref");
    if (fichier){
    	std::string ligne;
    	while (std::getline(fichier, ligne)){
           	AnsiString str = ligne.c_str();	
    	 }
    }
    A chaque passage sur la ligne "getline" j'ai l'erreur suivante :
    Bad parameter en cours de traitement : progPal.exe(2984) - c:\program files\borland\bds\4.0\include\dinkumware\fstream#23

    Le fichier fstream s'ouvre et la ligne suivante est en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((_Meta = fgetc(_File)) == EOF)
    mes includes :
    #include <string>
    #include <fstream>
    #include <iostream>

    J'utilise cette fonction dans d'autres projets BDS2006 sans aucun souci...

    Quelqu'un sait t'il ce qui me cause cette erreur ? Merci d'avance
    Marcootz

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    C'est bizarre car effectivement, je ne voie pas de problème dans le code.

    Peut être que si le code n'est pas en cause, c'est le fihcier lui même qui est en cause : fichier binaire, pas de fin de ligne, ligne trop longue, fin de ligne bizarre, ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Salut,
    Mon fichier est au format texte, en voici un extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    trappe1
    avant_gauche
    trappe2
    avant_droite
    ...
    A priori pas de format "spécial", je pense...

    A+

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Tu as très certainement d'autres inclusions, ne serait-ce que pour supporter AnsiString.
    De là à ce qu'il y n'ait pas une macro qui mette le souk.
    Si ton compilo te permet de voir le code après préprocessing, et avant compilation, cela pourrait être intéressant de voir ce qui est réellement compilé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Un affreux doute m'assaille: Tu utilises Borland C++ Builder?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  6. #6
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Oui j'utilise Borland BDS 2006 C++...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salut,

    d'abord ton BDS 2006 a-t-il tout ses updates?

    Ensuite ouvre ton fichier avec un éditeur hexa pour en analyser le contenu exacte et regarde si tu ne vois pas des '\0' un peu partout.

    Fais un teste en ouvrant le fichier avec des primitives C et pas des stream juste pour voir le comportement du programme.

    Tout ce que je viens de dire n'est qu'un ensemble de pistes de recherche, j'espère que cela t'aidera à trouver d'où vient le problème.

    @+

  8. #8
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    alors mon BDS à bien tous ces updates

    ensuite mon fichier semble correct, que du texte et des retours à la ligne.

    Ce qui est bizzare c'est que j'utilise les mêmes instructions sur d'autres fiches du programme et dans d'autres projets, mais je n'ai jamais eu ce genre de soucis...

    Merci

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Il est gros ce fichier qui pose problème (pour savoir si tu peux le mettre en attachement ou quelquepart sur Internet) ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Non il n'est pas gros du tout, le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    trappe1
    avant_gauche
    trappe2
    avant_droite
    trappe3
    arriere_gauche
    trappe4
    arriere_droite
    Je ne pense pas que ça puisse venir du contenu du fichier car j'ai déjà utilisé ce contenu dans d'autres projet et ça à bien fonctionné.

    Voici tout les includes que j'utilise sur ma fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <vcl.h>
    #include <fstream>
    #include <string>
    #include <iostream>
    #include <IniFiles.hpp>
    Merci !

  11. #11
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    En tout cas, le code fonctionne très bien, j'ai testé au mot le mot avec un fichier contenant les mêmes valeurs que celles postées, même headers (et BDS évidemment).
    Je n'arrive pas a me retrouver dans la même situation d'erreur / même message que toi, désolé.

    Ca va pas faire avancer le schmilblick, c'est sur. Qu'est ce qu'il y a de particulier 'autour' ?(autres headers, autre déclarations ?).

    ++
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  12. #12
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Salut,

    Merci Sunchaser d'avoir tester le code, mais je n'ai pas d'autres include ni d'autres déclarations...

    En attendant de comprendre ce problème connaissez vous d'autres méthodes pour lire un fichier texte ligne par ligne (mon futur fichier ne contiendra que 18 lignes)

    Merci

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    AnsiString Filename = "c:\\Machin.ref";
    if(FileExists(Filename))
        {
        TStringList *Fichier = new TStringList;
        Fichier->LoadFromFile(Filename);
     
        //Fichier->Strings[..]; //... Donc voir l'aide pour TStringList    
     
        //Après usage :
        //Fichier->Clear();
        delete Fichier;
        }
    A plus !

  14. #14
    Membre régulier Avatar de marcootz
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 159
    Points : 104
    Points
    104
    Par défaut
    Salut Henderson, ton code fonctionne impec, merci

    J'ai donc contourner mon problème en utilisant la TStringList car j'ai besoin que ma fonction tourne.

    Si jamais quelqu'un sait ce qui causait cette erreur, cela m'intéresse juste par curiosité...

    Merci à tous

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

Discussions similaires

  1. Problème lecture fichier avec fscanf
    Par hypto dans le forum C
    Réponses: 7
    Dernier message: 18/11/2013, 16h57
  2. problème lecture fichier avec structures de données
    Par hannibal007 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/04/2013, 19h51
  3. Problème lecture fichier avec >>
    Par C1rcus dans le forum C++
    Réponses: 2
    Dernier message: 18/11/2007, 18h19
  4. problème de lecture fichier
    Par Polo40 dans le forum C
    Réponses: 8
    Dernier message: 30/03/2006, 10h58
  5. Problème de lecture registre avec RegEnumKeyEx
    Par mdriesbach dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/10/2005, 11h27

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