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

VB.NET Discussion :

Problème de Streamreader


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 150
    Par défaut Problème de Streamreader
    Un bout de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim MonStreamReader AsNew StreamReader(NomFichier1)
    ' Parcourir le fichier PIPC.SAV jusqu'… la fin
    DoWhile MonStreamReader.Peek() >= 0
    ' R‚cup‚ration de l'adresse de la s‚quence
    Adresse = MonStreamReader.ReadLine
    ' R‚cup‚ration des PI/PC
    Commentaires = MonStreamReader.ReadLine
    ' Tri des PI et des PC (en fonction de la longueur de la chaŒne de caractŠres)
    SelectCase Commentaires.Length
    me permet de lire un fichier texte.
    Dans certains cas, alors que la ligne lue commence par un espace, mais a du texte derrière, Commentaires contient "", mais le plus bizarre, c'est que Commentaires.length = 61?????
    Le pire, c'est que j'ouvre ce fichier avec le notepad, je ne fais aucune modif mais je l'enregistre, et du coup ça remarche, Commentaires récupère bien la chaîne de 61 caractères.
    Si j'écrase le fichier enregistré par le fichier d'origine, bingo ça me refait le truc bizarre.
    J'ai essayé en remplaçant le Streamreader par un OpenFile, même punition.
    Quelqu'un a une idée?


    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sibama Voir le message
    Dans certains cas, alors que la ligne lue commence par un espace, mais a du texte derrière, Commentaires contient "", mais le plus bizarre, c'est que Commentaires.length = 61?????
    A priori ton fichier n'est pas vraiment un fichier texte, mais un fichier binaire... il doit contenir des caractères nuls
    Windows Forms fait appel à des fonctions Windows natives en C (via l'interop), et ces fonctions interprètent le caractère nul comme la fin de la chaîne. Le reste du texte n'est donc pas affiché... par contre si tu regardes la valeur de Commentaires dans le debugger, tu devrais voir des '\0' au début de la chaine.

  3. #3
    Membre confirmé Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 150
    Par défaut
    Quand tu parles de debugger, tu veux dire avec un point d'arrêt et un espion sur la variable?
    Si c'est ça, à part "", je vois rien dans la fenêtre de visu.
    Est ce que ton explication est compatible avec le fait que le Notepad corrige ce problème, si c'est le cas je suppose que ce dernier remet mon fichier en véritable .txt en éliminant les caractères olé olé.
    Vois tu une parade (un système de lecture de mon fichier?) qui me permettrais de passer outre ce petit problème?
    Si Commentaires.length vois 61, est-ce que ça veut dire que le contenu derrière le /0 est quelque part dans mon appli?



    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sibama Voir le message
    Est ce que ton explication est compatible avec le fait que le Notepad corrige ce problème, si c'est le cas je suppose que ce dernier remet mon fichier en véritable .txt en éliminant les caractères olé olé.
    Oui. J'ai fait le test, en créant un fichier txt avec des \0. Quand je l'enregistre avec notepad, les \0 sont remplacés par des espaces.
    Citation Envoyé par sibama Voir le message
    Vois tu une parade (un système de lecture de mon fichier?) qui me permettrais de passer outre ce petit problème?
    Il suffit de "nettoyer" la chaîne en supprimant les \0 ou en les remplaçant par un autre caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Commentaires = Commentaires.Replace("\0", "");
    Citation Envoyé par sibama Voir le message
    Si Commentaires.length vois 61, est-ce que ça veut dire que le contenu derrière le /0 est quelque part dans mon appli?
    Oui, toute la chaine est là a priori, mais l'affichage s'arrête au premier \0. Mais ça me surprend que VS ne te montre pas les \0... c'est peut-être pas sur toutes les versions

  5. #5
    Membre confirmé Avatar de sibama
    Profil pro
    Inscrit en
    Août 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 150
    Par défaut
    Super cool, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Récupération des PI/PC
                Commentaires = MonStreamReader.ReadLine.Replace(Chr(0), "")
    donne le résultat voulu.
    Je passe le sujet en résolu, et merci pour le coup de main.


    Ce n'est pas parce que l'on allume la bougie de quelqu'un avec sa lanterne que l'on se prive de lumière.

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

Discussions similaires

  1. Problème Streamreader accents
    Par Z4ng3tsu dans le forum C#
    Réponses: 8
    Dernier message: 08/04/2011, 10h39
  2. StreamReader Encoding problèmes
    Par elenar dans le forum Delphi .NET
    Réponses: 0
    Dernier message: 18/10/2007, 19h41
  3. Problème avec StreamReader
    Par JM-R dans le forum Framework .NET
    Réponses: 3
    Dernier message: 20/10/2006, 20h09
  4. [c#]Problème avec StreamReader
    Par MrPatel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/10/2006, 16h29
  5. Réponses: 2
    Dernier message: 28/12/2005, 15h00

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