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 :

probleme lecture/ecriture fichier


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut probleme lecture/ecriture fichier
    Bien le bonjour,

    j ai un petit souci dans mon code, je m'explique :

    je dois prendre un fichier toto et dedans il y a des lignes de 451 caracteres, au 363eme il y a une { que je dois enlever.
    Donc je me suis dis que j allais créer un autre fichier prendre de 0 à 363 puis insérer un espace et ptrendre de 364 à 450, pour l'instant tout va bien.
    je fais mes testes sur un fichier qui pèse 120 ko.(meme structure de ligne)
    quand je fais mes testent avec ce fichier tout va pour le mieux, le probleme c'est que le vrais fichier pèse 77Mega et mon application plante a 220ko avec une belle erreur :'System.ArgumentOutOfRangeException' avec comme informations supplémentaires 'l'index et la longueur doivent faire référence à un emplacement situé dans la chaîne'
    la je m'étonne car les lignes sont identique au point de vue de la structure, y a t il quelque chose clearer ??
    ou ai je fait nèimporte quoi ?
    je ne suis pas tres bon en VB, un petit peu d'aide serait le bienvenue.

    ci joint 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
    26
    27
    28
    29
    30
    31
    32
    33
    Dim sFileName As String = Application.StartupPath & "\" & "TOTO"
            Dim fs As New System.IO.FileStream(sFileName, IO.FileMode.Open, IO.FileAccess.Read)
            Dim sR As New System.IO.StreamReader(fs)
            Dim fst As New FileStream(Application.StartupPath & "\" & "TITI", FileMode.Create, FileAccess.Write)
            Dim sw As StreamWriter = New StreamWriter(fst)
            Dim sM As String = sR.ReadLine
            Dim ligne As String
            Dim ligne2 As String
            Dim ligne3 As String
     
            'on vérifie si le fichier existe
            If System.IO.File.Exists(Application.StartupPath & "\" & "TOTO") Then
                'lecture ligne par ligne du fichier
                Do
                    ligne2 = sM.Substring(0, 363)
                    'MsgBox(ligne2)
                    ligne3 = sM.Substring(364, 85)
                    'MsgBox(ligne3)
                    ligne = ligne2 & " " & ligne3
                    ' MsgBox(ligne)
     
                    '--- on écrit dans le fichier TITI
     
                    sw.WriteLine(ligne)
     
                    sM = sR.ReadLine
     
                Loop Until sM Is Nothing
                '--- on referme le fichier 
                sw.Close()
                '--- on ferme l'application
                Close()
            End If
    merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mai 2008
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    C'est le subString qui te pose problème, la taille de ta chaine ne correspond pas à ce que tu attend (taille inférieur à priori)

    Il faut que tu ajoute des tests sur la taille de ta chaine d'entrée

    désolé pour la syntax je ne fais pas de VB, mais ça doit être un truc dans le genre
    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
    Dim sFileName As String = Application.StartupPath & "\" & "TOTO"
            Dim fs As New System.IO.FileStream(sFileName, IO.FileMode.Open, IO.FileAccess.Read)
            Dim sR As New System.IO.StreamReader(fs)
            Dim fst As New FileStream(Application.StartupPath & "\" & "TITI", FileMode.Create, FileAccess.Write)
            Dim sw As StreamWriter = New StreamWriter(fst)
            Dim sM As String = sR.ReadLine
            Dim ligne As String
            Dim ligne2 As String
            Dim ligne3 As String
     
            'on vérifie si le fichier existe
            If System.IO.File.Exists(Application.StartupPath & "\" & "TOTO") Then
                'lecture ligne par ligne du fichier
                Do
                   ' Test chaine vide et longueur correcte
                    If not string.IsnullOrEmpty(sM) And sM.Length = 450 Then
                      ligne2 = sM.Substring(0, 363)
                      'MsgBox(ligne2)
                      ligne3 = sM.Substring(364, 85)
                      'MsgBox(ligne3)
                      ligne = ligne2 & " " & ligne3
                      ' MsgBox(ligne)
     
                      '--- on écrit dans le fichier TITI
     
                      sw.WriteLine(ligne)
                    else
                      MsgBox("Format de ligne incorrecte")
                    endif
                    sM = sR.ReadLine
     
                Loop Until sM Is Nothing
                '--- on referme le fichier 
                sw.Close()
                '--- on ferme l'application
                Close()
            End If

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    merci pour ta réponse, mais le problème persiste le test est concluant les ligne sont toujours de même longueur (j ai du enlever la 1ere parti de ton test a savoir si c'est bien un string car non reconnu dans vb.net 2003, j ai fait un test avec un autre fichier du même genre (77Mega) de même structure de ligne et ca plante quasiment au même endroit (224ko)
    je ne vois pas trops ou est le probleme il s'arrete d'ecrire sur ligne1 (a moitié)
    Si quelqu'un a une solution je suis preneur

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    yop,

    bon je viens de remplacer les Substring par Replace et la ça fonctionne

    ci joint mon code pour ceux que ça interresse :

    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
    Dim sFileName As String = Application.StartupPath & "\" & "TOTO"
            Dim fs As New System.IO.FileStream(sFileName, IO.FileMode.Open, IO.FileAccess.Read)
            Dim sR As New System.IO.StreamReader(fs)
            Dim fst As New FileStream(Application.StartupPath & "\" & "TITI", FileMode.Create, FileAccess.Write)
            Dim sw As StreamWriter = New StreamWriter(fst)
            Dim sM As String = sR.ReadLine
            Dim ligne As String
            Dim ligne2 As String
            Dim ligne3 As String
     
            'on vérifie si le fichier existe
            If System.IO.File.Exists(Application.StartupPath & "\" & "TOTO") Then
                'lecture ligne par ligne du fichier
                Do
     
                    sM = sM.Replace("{", " ")
     
                        '--- on écrit dans le fichier TITI
     
                    sw.WriteLine(sM)
     
                    sM = sR.ReadLine
     
                Loop Until sM Is Nothing
                '--- on referme le fichier 
                sw.Close()
                '--- on ferme l'application
                Close()
            End If
    mais je comprends toujours pas pourquoi ça ne fonctionnait pas avec les substring

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

Discussions similaires

  1. probleme lecture ecriture dans des fichiers
    Par xman_genius dans le forum C
    Réponses: 9
    Dernier message: 16/01/2007, 19h50
  2. [lecture/ecriture] fichier excel
    Par ethno dans le forum C
    Réponses: 4
    Dernier message: 14/04/2006, 19h47
  3. php: lecture ecriture fichier
    Par kda007 dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 18h49
  4. [AS2] Lecture Ecriture Fichier Texte
    Par cpr0 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 13/09/2005, 11h22
  5. [LG]Lecture-ecriture fichier
    Par arno15 dans le forum Langage
    Réponses: 19
    Dernier message: 03/02/2005, 22h25

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