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

Windows Forms Discussion :

[VB.NET]exception génèrée:"cannot read from a closed text reader"


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut [VB.NET]exception génèrée:"cannot read from a closed text reader"
    salut tout le monde.
    (VB 2005 express edition)
    mon souci c'est que lorsque j'execute mon application qui au début lit un fichier 'texte' (.dbc) puis ecrit dans un autre fichier texte (.txt), une exception est générée :cannot read from a closed text reader.
    quelqu'un a une solution ?

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    tu ferme ton stream trop tot.....

    met un bout de code pour voir..

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
        Dim SW As IO.StreamWriter = File.CreateText("C:\user\U256265\Visual Studio 2005\scarv06.txt")
        Dim SR As StreamReader = File.OpenText("C:\user\U256265\Visual Studio 2005\WindowsApplication1\F2005.dbc")
        Public Function lecture(ByVal fichier As String)
            Do
                ligne = SR.ReadLine()
                SR.Close()
            Loop Until (str = ligne.IndexOf("BO_" & ID))
            'Call oDecodage.decoder(tempRxCanMsg)
     
            If ID = 256 Then
     
            End If
            Return ID
        End Function
     
        Sub ecritureFichier(ByVal fichier As String)
    Try
     SW.WriteLine("")
                SW.WriteLine("Private Function findData(ByVal buffer As Byte, ByVal i0 As Integer, ByVal len As Integer) As Integer")
                SW.WriteLine("Dim myBV As New BitVector32(0)")
                SW.WriteLine("Dim mySect1 As BitVector32.Section = BitVector32.CreateSection(255)")
                SW.WriteLine("myBV(mySect1) = Buffer ")
                SW.WriteLine("Dim mySectData As BitVector32.Section")
                           SW.WriteLine("Return myBV(mySectData)")
                SW.WriteLine(" End Function")
                SW.WriteLine("")
                lecture("C:\user\U256265\Visual Studio 2005\WindowsApplication1\F2005.dbc")
     
                If ID = 256 Then            ' réception trame 100h périodique (256)
    .... ' un peu longue cette procédure !!!
    ' ensuite là j'appelle cs 2 fonctions dans form1_load
    Private Sub Form1_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                ecritureFichier("C:\user\U256265\Visual Studio 2005\scarv06.txt")
                swf1.Width = 800
                swf1.Height = 600
                swf1.Movie = Application.StartupPath & "\scar.swf"
                Console.WriteLine(Application.StartupPath)
                oCanusb = New Canusb
                oCanusb.CanListen()
     
            Catch ex As Exception
                MsgBox(ex.ToString, MsgBoxStyle.Exclamation, "Chargement")
            End Try
        End Sub
    ' et c'est là que sa marche pas !!!!
    c'est lors de la lecture que sa marche pas ! je comprend pas pourquoi.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    à cause du SR.close() non (stream reader) ???

  5. #5
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Citation Envoyé par zouhib
    à cause du SR.close() non (stream reader) ???
    oui cêst à cause de sR.Close()

    dès que tu lis la première ligne tu ferme ton flux... or après il n'est jamais ouvert..

    ton SR.Close doit se trouve après la boucle....

    place-le après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Loop Until (str = ligne.IndexOf("BO_" & ID))

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    wé genial ! j'ai une autre exception !!!!

    "Object reference not set to an instance of an object" sa je crois c'est pas dû à SR.close() !!!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    une idée sur cette exception?????

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 456
    Points : 1 782
    Points
    1 782
    Par défaut
    salut,
    essaie de suivre pas à pas ton code lors de l execution, tu verras où ça plante
    Sinon à première vue tu instancie bien swf1?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    oui il est bien instancié swf1 sinon sa m'aurait généré une erreur.
    j'ai fais un débogage à la main classique mais je vois pas toujours ou sa cloche!

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    je viens de debuger et j'ai constaté que c'est la fonction lesture qu'il aime pas lorsque je l'appelle dans la procédure ecriture (cf code précédent) par contre je vois pas ce qui va pas, est ce lors de l'appel de cette fonction ou est ce que c'est à cause du corps de cette fonction ! mystère......

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    toujours pas de solutions??!!!!!!!!

  12. #12
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    tu as des problems au niveau conception...

    innutile de déclarer ça en public...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim SR As StreamReader = File.OpenText("C:\user\U256265\Visual Studio 2005\WindowsApplication1\F2005.dbc")
    déclare le dans ta fonction lecture....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim sr as stream = file.opentext(fichier)

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    sa change rien j'ai toujours exception....

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    Salut tout le monde !
    J'ai toujours cette exception générée !! :
    Object reference not set to an instance of an object.

    et je comprend pas pourquoi!
    J'ai changé le code précédent, le nouveau :
    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
    26
     Public Sub lecture(ByVal fichier As String)
            Do
                ligne = SR.ReadLine()
            Loop Until (str = ligne.IndexOf("BO_"))
            ID = Func1(ligne)
            SW.WriteLine(ID)
            SW.WriteLine("ID_received  =")
            'If str = ligne.IndexOf("BO_") Then
            chaine = ligne2.IndexOf("SG_")  'l'exception est générée sur cette ligne
            For Each ligne2 In chaine
                ligne2 = SR.ReadLine()
            Next ligne2
            donnée = Func2(ligne2)
            SW.WriteLine(donnée)
            'End If
            SR.Close()
            SW.Close()
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Try
            lecture("C:\user\U256265\Visual Studio 2005\F2005.dbc") 'et la même exception est générée aussi ici.
            'Catch ex As Exception
            '    MsgBox(ex.ToString, MsgBoxStyle.Exclamation)
            'End Try
        End Sub

  15. #15
    Membre actif Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Points : 296
    Points
    296
    Par défaut
    Citation Envoyé par zouhib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = ligne2.IndexOf("SG_")  'l'exception est générée sur cette ligne
    Salut,
    il vient d'où ce ligne2 ?
    Je ne vois pas de déclaration locale ou d'assignation.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    tout est bien déclaré !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       Dim ligne As String
        Dim ligne2 As String
        Dim SW As IO.StreamWriter = File.CreateText("C:\user\U256265\Visual Studio 2005\scarv06.txt")
        Dim SR As StreamReader = File.OpenText("C:\user\U256265\Visual Studio 2005\F2005.dbc")
        Dim chaine As String
        Dim str As String
        Dim ID As Integer
        Dim donnée As String

  17. #17
    Membre actif Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Points : 296
    Points
    296
    Par défaut
    Désolé d'insister mais,
    ok pour la déclaration mais où est l'assignation dans ligne2 ?
    Car d'après le code que l'on voit ligne2=nothing.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    il n'y a pas d'assignation et c'est peut être sa le problème mais je vois pas quesque je pourrai lui assigner !

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 137
    Points : 38
    Points
    38
    Par défaut
    comme c'est indiqué sur le code, ligne2 récupère les lignes lues sur le fichier texte.

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    chaine = ligne2.IndexOf("SG_")  'l'exception est générée sur cette ligne
    For Each ligne2 In chaine
         ligne2 = SR.ReadLine()
    Next ligne2
    Il les récupere dans la boucle For Each donc au moment où tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine = ligne2.IndexOf("SG_")
    ligne2 est égal à Nothing

Discussions similaires

  1. [VS.NET 2005][VB.NET]Exception
    Par caelum dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/06/2006, 11h41
  2. Réponses: 2
    Dernier message: 29/05/2006, 09h54
  3. [vb.net][exception] erreur incomprehensible
    Par arnolem dans le forum Windows Forms
    Réponses: 8
    Dernier message: 05/01/2006, 14h33
  4. [vb.net] exception sur monForm.Show
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/07/2005, 12h27
  5. [VB.NET] Exception si DataGrid mis a jour
    Par florent_g dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/10/2004, 12h00

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