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 :

Lecture fichier texte impossible


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut Lecture fichier texte impossible
    Bonjour,

    Je bosse avec un logiciel d'encaissement de caisse.

    J'essaye de développer un truc en parallèle. J'ai une imprimante à ticket de caisse physique et j'en est créer une autre virtuelle utilisant " printer++ " pour ceux qui connaissent.

    Pour ceux qui ne connaissent pas, c'est un soft qui génère un fichier postscript, et une fois généré peut lancer mon soft que je veux développer en donnant pour paramètre le fichier postscript.

    ça c'est ok, ça ne coince pas.

    En revanche, quand je traite ligne par ligne le fichier, je coince à la seconde ligne. Grosso-modo je veux récupéré un string contenant mon fichier ps, mais au bout de la seconde ligne il sort du try sans erreur et sans toutes les lignes.

    mon code :
    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
    20
    21
    22
    23
    24
    25
     
     
            Try
                ' Création d'une instance de StreamReader pour permettre la lecture de notre fichier
                Dim monStreamReader As StreamReader = New StreamReader(Server.MapPath("test.ps"))
                Dim ligne As String
                Dim str as string
                'Lecture de toutes les lignes et affichage de chacune sur la page
                Do
                    ligne = monStreamReader.ReadLine()
                    str = str & ligne & vbcrlf
                Loop Until ligne Is Nothing
     
                'Fermeture du StreamReader (attention très important)
                monStreamReader.Close()
     
            Catch ex As Exception
     
                'Code exécuté en cas d'exception
                msgbox(ex.message)
     
            End Try
     
            'j'affiche mon str
            msgbox(str)
    Vous pourrez retrouvez en pièce jointe une copie du fichier postcript généré par printer++.

    Si jamais le but de mon soft, c'est de récupéré les montants, les encaissements, les TVA, et derrière ça génère un excel, cette partie de mon soft est déjà développé et fonctionne, il suffit que je le lance en mode simulation plein de fois en envoyant manuellement les valeurs qu'il doit traiter.

    Tant que je ne peux pas récupérer les valeurs directement dans les tickets de caisse, ça ne fonctionnera pas dans le global.

    En remerciant d'avance tout ceux qui participerons à la résolution de mon problème,

    Je vous souhaite une bonne journée,

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    en plus court :
    System.IO.File.ReadAllText(path) ou System.IO.File.ReadAllLines(path) (qui retourne une tableau de string)

    et pour info mettre un .close c'est bien, mais en cas d'erreur tu ne passes pas dessus donc ça laisse le fichier ouvert ...
    voir using { } ou try finally pour éviter ça
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut je vais tester
    Merci pour l'info l'ami, je vais tester.

    Pour le try, s'était plus en mode test qu'autre chose, j'ai essayé pas mal de truc, le tout à l'arrache n'arrivant à rien

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut
    Bon, ça fonctionne pas exactement.

    readalllines fonctionne, mais ça me donne un tableau de string, j'ai besoin d'un seul string contenant des retour à la ligne.

    J'ai essayé du coup avec une boucle for de constituer mon string, arrivé à la seconde ligne ça continue de tourner niveau boucle, mais mon str ne concatène pas la suite, ma seconde ligne est même incomplète.

    En essayant readalltext ça ne fonctionne pas non plus, j'ai le même résultat qu'avec ma boucle FOR, mes deux premières lignes incomplètes.

    Rapport à mon fichier postscript, ça bloque après le B majuscule de la seconde ligne.

    Dans l'idée c'est assez cool déjà le readalllines, il faudrait que je puisse réussir à concaténer la suite ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut
    Si ça peut aider, j'ai bien l'impression que c'est le B majuscule de la deuxième ligne qui fou le bordel ...

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Pour info, ce n'est pas le B de la deuxième ligne qui pose problème mais plutôt le "caractère" qui se trouve juste après : c'est un byte nul (zéro).
    Tu peux les supprimer en faisant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String s = File.ReadAllText(FileName).Replace("\0", "");

  7. #7
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Bonjour,

    Pouvez-vous faire ceci aussi çà fonctionne très bien ligne par ligne comme votre fichier test.PS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Imports System.IO
    Imports System.Text
     
    Public Class Form1
        Dim filepath As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\test\test.ps"
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim reader As New StreamReader(filepath, Encoding.Default)
            Do While reader.Peek > -1
                RichTextBox1.AppendText(reader.ReadLine & Environment.NewLine)
            Loop
            reader.Close()
        End Sub
    End Class

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut
    Je vais tester ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String s = File.ReadAllText(FileName).Replace("\0", "");
    Bon c'est du VB.net, mais j'ai compris le truc lol.

    ça peut être ça tout à fait, je capte juste pas pourquoi il déraille sur ce caractère en fait.

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    c'est peut etre du à l'encodage, par défaut readalltext utilise celui par défaut dans windows, mais si c'est de l'utf8 ou autre il faut le préciser
    ce sont des octets qui sont lu dans le fichier, et ils sont ensuite transformés en string via un encodage
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut
    Bon, j'ai tester le bout de code que tu m'as filer, sans meilleur résultat, ça s'arrête au B majuscule ...

    Ton idée me semblait bonne pourtant de partir sur ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String s = File.ReadAllText(FileName).Replace("\0", "");
    En ce qui concerne ce code la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Imports System.IO
    Imports System.Text
     
    Public Class Form1
        Dim filepath As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\test\test.ps"
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim reader As New StreamReader(filepath, Encoding.Default)
            Do While reader.Peek > -1
                RichTextBox1.AppendText(reader.ReadLine & Environment.NewLine)
            Loop
            reader.Close()
        End Sub
    End Class
    ça nécessite que je créer un objet physique (richtextbox1), ça me soule alors qu'une variable string est largement mieux.

    j'ai tester en vite fait, j'ai déclarer mon richtextbox avec un dim richtexbox1 as richtextbox = nothing, ça n'a bien fonctionné de toute façon.

    ça ne me semble pas être la fonction la plus adéquate.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut résolution
    Merci ebastien ! j'ai résolu mon soucis grâce à toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim ticket as string = File.ReadAllText(FileName).Replace(chr(0), "")
    en effet, \0 c'est plutôt utiliser dans d'autres langages, j'avais déjà vu cette syntaxe quelque part.

    Du coup pour lui indiquer qu'en ascii c'est le caractère 0 (null), j'ai remplacer ton "\0" par "chr(0)" et ça roule,

    Encore merci !

  12. #12
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Ah oui désolé pour le temps perdu, je t'ai envoyé le bout de code en C#. Je n'avais pas vu qu'on était sur le forum vb.net.
    Il faudra que je fasse attention à ça à l'avenir ;-)

Discussions similaires

  1. Lecture fichier texte
    Par vince-60 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/04/2006, 15h15
  2. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 09h46
  3. lecture fichier texte et ...
    Par Nils30 dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 12h55
  4. lecture fichier text et renvoi du contenu en byte *
    Par JulienT dans le forum Réseau
    Réponses: 3
    Dernier message: 02/01/2006, 14h21
  5. Lecture fichier text
    Par krfa1 dans le forum ASP
    Réponses: 13
    Dernier message: 25/11/2005, 09h00

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