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

MFC Discussion :

[C++.net]StreamReader


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut [C++.net]StreamReader
    Bonjour,

    voil� j'essaye de lire un fichier stream et j'aimerai que je StreamReader lise toutes mes lignes jusqu'au bout puis qu'il se fermer comment faire ?

    Quelle est la condition pour dire au StreamReader de s'arreter quand il arrive � la fin ?
    ou bien lui dire de s'arr�ter lorsque la ligne qu'il lit est �gale � "..." ?

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    Question conne !!

    la solution est :

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    Comment lui dire de s'arr�ter de lire lorsqu'il renconter par exemple � une ligne le mot "FIN" ?

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    avec une condtion pour sortir de la boucle !

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    nan parce que il y a un truc bizarre que je saisie pas.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    FileStream *fs;
    if(boitechargprojet->ShowDialog() == DialogResult::OK)
    {
    fs = new FileStream(boitechargprojet->FileName, FileMode::Open);
     StreamReader * sr = new  StreamReader(fs);
    while(sr->Read() !=-1)
    {
    MessageBox::Show(Convert::ToString(sr->ReadLine()));
    }
    }
     
    }
    Voici mon code.

    Dans le fichier la premi�re ligne est "Unamed" mais quand je lis le fichier avec "sr->ReadLine()" il me lit "named" ????? sans le "U"
    Pourquoi ?

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    parce que tu t'en sers mal.

    sr->Read va faire d�placer le pointeur de fichier.

    Pourquoi ne pas lire tout le fichier dans un string, avec sr->ReadToEnd ?

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    j'avais remarquer cette m�thode mais je sais pas comment m'en servir ?
    La fonction Read() ne retourne t-elle pas -1 lorsqu'elle arrive � la fin du fichier ?

  8. #8
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    Pour utiliser sr->ReadToEnd, c'est pas compliqu�, il suffit de l'appeler
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    maString = sr->ReadToEnd();

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    je vois toujours pas comment l'utiliser ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    System::String *p = sr->ReadToEnd();
     while(p==false)
    ?????

    en gros voil� ce que j'essaye de faire

    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
    while(sr->ReadToEnd())
    			 {
    			 vig = new vignette;
    			 this->vig->setnom(Convert::ToString(sr->ReadLine()));
    			 this->vig->setCordX(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setCordY(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setDimHei(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setDimWid(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setFramedS(Convert::ToBoolean(sr->ReadLine()));
    			 this->vig->setFtop(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setFbot(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setFleft(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setFrig(Convert::ToInt16(sr->ReadLine()));
    			 this->vig->setUVFlip(Convert::ToBoolean(sr->ReadLine()));
    			 this->vig->setUVMiror(Convert::ToBoolean(sr->ReadLine()));
    }
    � chaque ligne correspond une propri�t� que j'affecte � mon objet vignette

  10. #10
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    en fait, je comprends pas ...

    sr->ReadToEnd, va tout te copier dans un string, donc, apr�s, c'est le string qu'il faut manipuler.

    Ensuite, pour ton cas, tu as l'air d'avoir besoin de lire ligne par ligne. Pourquoi faire une boucle puisque tu d�clines tout ce qu'il y a dans le fichier ?

    Pourquoi ne pas faire simplement
    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
     
              tmpString = sr->ReadToEnd();
              while(tmpString)
              {
              vig = new vignette;
              this->vig->setnom(Convert::ToString(tmpString));
              this->vig->setCordX(Convert::ToInt16(sr->ReadLine()));
              this->vig->setCordY(Convert::ToInt16(sr->ReadLine()));
              this->vig->setDimHei(Convert::ToInt16(sr->ReadLine()));
              this->vig->setDimWid(Convert::ToInt16(sr->ReadLine()));
              this->vig->setFramedS(Convert::ToBoolean(sr->ReadLine()));
              this->vig->setFtop(Convert::ToInt16(sr->ReadLine()));
              this->vig->setFbot(Convert::ToInt16(sr->ReadLine()));
              this->vig->setFleft(Convert::ToInt16(sr->ReadLine()));
              this->vig->setFrig(Convert::ToInt16(sr->ReadLine()));
              this->vig->setUVFlip(Convert::ToBoolean(sr->ReadLine()));
              this->vig->setUVMiror(Convert::ToBoolean(sr->ReadLine()));
              tmpString = sr->ReadToEnd();
    }
    N'h�site pas � mettre ton code entre try catch, la lecture de fichier, c'est capricieux

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    je essayer mais visiblement �a marche pas chez moi je vais essayer de t'expliquer un gros ce que je dois faire :

    1-j'ai sauver mon fichier (streamwriter) qui sauvegarde la position de mes vignettes(d�riv� de panel avec des propri�t�s suppl�mentaire) et de l'image de fond de mon appli.
    Chaque panel a ses propres valeurs de propri�t�s
    "nom,CordX,CordY,DimHei,DimWid,FramedS,Fbot,Ftop,Fleft,Frig,UVflip,UVmiror"
    voila mon fichier :
    C:\Documents and Settings\kt13\Mes documents\imagexml\skinset-bos-heads-02.png
    Unamed
    4
    4
    50
    50
    False
    0
    0
    0
    0
    False
    False
    Unamed
    50
    50
    50
    50
    False
    0
    0
    0
    0
    False
    False
    Unamed
    100
    100
    50
    50
    False
    0
    0
    0
    0
    False
    False
    fin
    je veux donc lire le fichier jusqu'au bout afin de charger sur la tabpag mon image de fond avec les vignettes au m�me position qu'avant.
    chaque "Unamed" (qui repr�sente le nom de la vignette) est un nouvelle objet vignette.

    J'aimerai donc connaitre la condition de fin de fichier ou lorsque je rencontre le mot "fin"

  12. #12
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    ce que j'ai fait devrait marcher normalement

    � l'exception qu'il faut changer tmpString = sr->ReadToEnd(); par tmpString = sr->ReadLine();

    erreur de copier coller de ma part

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    96
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 96
    Par d�faut
    Exact il falait changer par Readline();

    Tu me sauve encore une fois

    Merci !!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 19/01/2009, 14h43
  2. R�ponses: 8
    Dernier message: 16/12/2007, 18h25
  3. [VB.NET] streamReader.read = double ?!?!
    Par Torkan dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 03/06/2006, 04h52
  4. [.net] streamreader, streamwriter
    Par noinneh dans le forum MFC
    R�ponses: 3
    Dernier message: 10/03/2006, 14h39
  5. [vb.net][StreamReader] perte des accents
    Par arnolem dans le forum Windows Forms
    R�ponses: 4
    Dernier message: 08/02/2006, 17h30

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