Erreur : " Illegal characters in patch"

Résolu
Messages postés
32
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
25 août 2008
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
J'ai un message d'erreur :  " Illegal characters in path. "

Voici le code:
--------------------------------------------------------------------------
            '-------------
           
Tableau3(0 + (b - 3)) "In FALSE" & Environment.NewLine &
"Out False" & Environment.NewLine & "Key ""user-agent:"
& Tableau4(0 + (b - 3)) & Tableau5(0 + (b - 3)) &
Tableau6(0 + (b - 3)) & Tableau7(0 + (b - 3)) & Tableau2(0 + (b
- 3)) & """" & Environment.NewLine & "Match = ""*""" &
Environment.NewLine & "Replace = """ & Tableau1(0 + (b - 3))
& """" & Environment.NewLine
            '-------------
                RichTextBox1.Text = RichTextBox1.Text & vbCrLf & Tableau3(0 + (b - 3))
            '-------------
            Loop While a <> b - 2
            ProgressBar1.Value = 80
            Quitter_exl()
            '-------------
            Button5.Enabled = True
            '-------------
            Dim Temp_D As StreamReader = File.OpenText(My.Resources.Temp_D)
            While Not Temp_D.EndOfStream
                Dim line As String = Temp_D.ReadLine()
            End While
            '-------------
            Dim Temp_F As StreamReader = File.OpenText(My.Resources.Temp_F)
            While Not Temp_F.EndOfStream
                Dim line As String = Temp_F.ReadLine()
            End While
            '-------------
            Dim T1 As String
            Dim T2 As String
            T1 = Temp_D.Read
            T2 = Temp_F.Read
            conf = T1 & RichTextBox1.Text & T2
            Temp_D.Close()
            Temp_F.Close()
            '-------------
            Dim Ficecrire As System.IO.StreamWriter
            'sauvegarde
            Ficecrire = New System.IO.StreamWriter(SaveFileDialog1.FileName)
            Ficecrire.WriteLine(RichTextBox1.Text)
            ProgressBar1.Value = 100
            Label5.Visible = True

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur...")
        End Try
    End Sub
------------------------------------------------------------------------------------------------

Ps: en mode débog pas a pas, sa ne plante pas avent ( Button5.Enabled = True), Donc les ligne susceptible de poser problème sont en orange ^^

Merci d'avance.

Cordialement.

Impossibeulman.

10 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

c'est quoi temp_D ? (je fais pas de Dotnet)

Mais au vu du message d'erreur, je dirais que tu tentes d'écrire un nom de fichier avec un caractère pas commun (avec ton filedialog dans le streamwriter).
Après suis pas assez calé pour te dire quels caractères peuvent provoquer une erreur. (et te garantis pas que je te mette sur la bonne voie)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
11
Salut,
Je suis d'accord avec Kristof :
Dim Temp_D As StreamReader = File.OpenText(My.Resources.Temp_D)
My.Resources.Temp_D doit être un chemin valide pointant sur un fichier
Mais un "" est un caractère valide pour un chemin de fichier

While Not TempDb.EndOfStream
    Dim lined As String = TempDb.ReadLine()
    line_f = lined
End While
Le but est d'avoir la dernière ligne du fichier donc? (contenue dans line_f)
Pas très élgant de lire toues les lignes si on ne veut que la dernière, mais effectivement on à pas trop le choix. Mais je conseil de lire le ficher en une fois au lieu de faire une boucle, comme cela:
Dim Lines() As String = IO.File.ReadAllLines("C:\Fichier.txt")
Dim LastLine As String = Lines(Lines.Length - 1)

Tu peux simplifier la sauvegarde de la même façon :
<strike>Dim Ficecrire As System.IO.StreamWriter
Ficecrire = New System.IO.StreamWriter(SaveFileDialog1.FileName)
Ficecrire.WriteLine(RichTextBox1.Text)</strike>
devient :
IO.File.WriteAllText(SaveFileDialog1.FileName, RichTextBox1.Text)

Lorsque tu dévelope/test ton code, évite de faire de gros bloc Try/Catch de ce genre pour avoir la ligne précise de l'erreur et son message. On met un Try Catch de ce genre pour gérer les erreurs une fois le code fini et testé, or là tu ne gère rien du tout

mortalino > Le FileSaveDialog ne peut pas retourner un nom de chemin invalide (sauf une chaine nulle /vide si le bouton Annuler à été cliqué)
Messages postés
32
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
25 août 2008

C'est bon...

Tout est rentrer dans l'ordre ^^

Après avoir utiliser cela:

            '-------------
            Button5.Enabled = True
            '-------------
            RichTextBox2.Text = My.Resources.tempD
            '-------------
            RichTextBox3.Text = My.Resources.tempF
            '-------------
            Dim conf As String
            conf = RichTextBox2.Text & RichTextBox1.Text & RichTextBox3.Text
            '-------------
            'sauvegarde
            IO.File.WriteAllText(SaveFileDialog1.FileName, conf)

--------------------------------------------

Merci a tous de votre aide.

Cordialement.
Messages postés
32
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
25 août 2008

Peut-être ...

TempDb et TempFi Sont mes template début et fin.

Car je cherche a générer un fichier de configuration (CFG) pour un autre logiciel.

Mais je ne génère que les paramètre du milieu du fichier, les donnée qui de trouve aven et aprés je cherche juste a les importer sous forme de template et regrouper le tout a la fin (conf = line_d & RichTextBox1.Text & line_f).

J'ai modifier légèrement mon code mais toujours la même erreur:

-------------------------------------------------------------------------------------
    Sub gen_cfg()

        Dim Tableau1(a - 1) As String
        Dim Tableau2(a - 1) As String
        Dim Tableau3(a - 1) As String
        '-------------
        Dim Tableau4(a - 1) As String
        Dim Tableau5(a - 1) As String
        Dim Tableau6(a - 1) As String
        Dim Tableau7(a - 1) As String
        Dim conf As String
        '-------------
        b = 2
        ProgressBar1.Value = 30
        Try
            Do
                b = b + 1
                Tableau1(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("A" & b).value
                Tableau2(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("B" & b).value
                '-------------
                Tableau4(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("C" & b).value
                If Tableau4(0 + (b - 3)) Like "*3G" Then
                    Tableau4(0 + (b - 3)) = "3G "
                ElseIf Tableau4(0 + (b - 3)) Like "*2G" Then
                    Tableau4(0 + (b - 3)) = "2G "
                ElseIf Tableau4(0 + (b - 3)) Like "Basic C*" Then
                    Tableau4(0 + (b - 3)) = "BC "
                Else
                    Tableau4(0 + (b - 3)) = ""
                End If
                '-------------
                Tableau5(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("D" & b).value
                If Tableau5(0 + (b - 3)) Like "Oui" Then
                    Tableau5(0 + (b - 3)) = "XH "
                ElseIf Tableau5(0 + (b - 3)) Like "Non" Then
                    Tableau5(0 + (b - 3)) = "WM "
                Else
                    Tableau5(0 + (b - 3)) = ""
                End If
                '-------------
                Tableau6(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("S" & b).value
                If Tableau6(0 + (b - 3)) Like "TRUE" Then
                    Tableau6(0 + (b - 3)) = "J "
                ElseIf Tableau6(0 + (b - 3)) Like "FALSE" Then
                    Tableau6(0 + (b - 3)) = ""
                Else
                    Tableau6(0 + (b - 3)) = ""
                End If
                '-------------
                Tableau7(0 + (b - 3)) = appxls.ActiveWorkbook.Worksheets(2).range("E" & b).value
                If Tableau7(0 + (b - 3)) Like "Oui" Then
                    Tableau7(0 + (b - 3)) = "M "
                ElseIf Tableau7(0 + (b - 3)) Like "Non" Then
                    Tableau7(0 + (b - 3)) = ""
                Else
                    Tableau7(0 + (b - 3)) = ""
                End If
                '-------------                Tableau3(0 + (b - 3)) "In FALSE" & Environment.NewLine & "Out = False" & Environment.NewLine & "Key = ""user-agent:" & Tableau4(0 + (b - 3)) & Tableau5(0 + (b - 3)) & Tableau6(0 + (b - 3)) & Tableau7(0 + (b - 3)) & Tableau2(0 + (b - 3)) & """" & Environment.NewLine & "Match = ""*""" & Environment.NewLine & "Replace = """ & Tableau1(0 + (b - 3)) & """" & Environment.NewLine
                '-------------
                RichTextBox1.Text = RichTextBox1.Text & vbCrLf & Tableau3(0 + (b - 3))
                '-------------
            Loop While a <> b - 2
            ProgressBar1.Value = 80
            Quitter_exl()
            '-------------
            Button5.Enabled = True
            '-------------
            Dim TempDb As StreamReader = File.OpenText(My.Resources.TempDb)
            While Not TempDb.EndOfStream
                Dim lined As String = TempDb.ReadLine()
                line_f = lined
            End While
            '-------------
            Dim TempFi As StreamReader = File.OpenText(My.Resources.TempFi)
            While Not TempFi.EndOfStream
                Dim linef As String = TempFi.ReadLine()
                line_d = linef
            End While
            '-------------
            conf = line_d & RichTextBox1.Text & line_f
            TempDb.Close()
            TempFi.Close()
            '-------------
            Dim Ficecrire As System.IO.StreamWriter
            'sauvegarde
            Ficecrire = New System.IO.StreamWriter(SaveFileDialog1.FileName)
            Ficecrire.WriteLine(RichTextBox1.Text)
            ProgressBar1.Value = 100
            Label5.Visible = True

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erreur...")
        End Try
    End Sub
----------------------------------------------------------------------------------------------------

Impossibeulman.
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
C'est ton My.Resources.TempDb qui contient une valeur ne représentant pas un chemin d'accès valide. Avec un caractère non accepter pour un nom de fichier dedans, du genre *, ?, /, \, etc ...
Fait un Messagebox.Show dessus juste avant la ligne ouvrant le stream avec et tu verras le problème je pense !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
C'est pas faux !

Exact Kevin, sans vouloir me justifier, suis couché à 1h30 (et pas frais..) et levé à 6, donc en vrac.
Bien vu et merci de me reprendre

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
11
On t'en veux pas mortalino

Moi me suis couché à 6h, mais j'ai eu la journée pour me reposer (Eurockéennes )
Messages postés
32
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
25 août 2008

L'erreur surviens a la ligne ( TempDb = File.OpenText(My.Resources.TempDb))
Pour se qui est du fichier je cherche a lire tout le contenu du fichier.

Pur se qui est de l'utilisation:
Les 2 fichier texte sont des template de début et de fin.
Exemple:
Flichier1 contient: Bonjours et merci d'avoir choisi code source.
Fichier2 contient: Merci de votre fidélisée, Cdt.
La partie générer: Vos identifient sont xxx -xxx-xxx -xxx bla bla bla

Le contenu de tout le fichier 1 + le texte générer + contenu de fichier 2 = conf
Conf est alors égala a :
Bonjours et merci d'avoir choisi code source.
Vos identifient sont xxx -xxx-xxx -xxx bla bla bla
Merci de votre fidélisée, Cdt.

Et conf est ensuite enregistrer dans un .CFG en utilisent le même encodage que un TXT.

Voila pour se qui est des explications...
Le hic est que je doit avoir fini sa pour 17h ce soir.
Je suis dans la merde.
---------------------------------------------------------------------------------------------
            '-------------
            Button5.Enabled = True
            '-------------
         Dim TempDb As StreamReader
            TempDb = File.OpenText(My.Resources.TempDb)
            While Not TempDb.EndOfStream
                Dim lined As String = TempDb.ReadToEnd
                line_f = lined
            End While
            TempDb.Close()
            '-------------
            Dim TempFi As StreamReader
            TempFi = File.OpenText(My.Resources.TempFi)
            While Not TempFi.EndOfStream
                Dim linef As String = TempFi.ReadToEnd
                line_d = linef
            End While
            TempFi.Close()
            '-------------
            conf = line_d & RichTextBox1.Text & line_f
            '-------------
            Dim Ficecrire As System.IO.StreamWriter
            'sauvegarde
            Ficecrire = New System.IO.StreamWriter(SaveFileDialog1.FileName)
            Ficecrire.WriteLine(RichTextBox1.Text)
            ProgressBar1.Value = 100
            Label5.Visible = True
---------------------------------------------------------------------------------------------

Impossibeulman.
Messages postés
32
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
25 août 2008

Je viens d'essayer comme tu ma conseiller:

            Button5.Enabled = True
            '-------------
            Dim Lines() As String = IO.File.ReadAllLines(My.Resources.TempDb)
            Dim LastLine As String = Lines(Lines.Length - 1)
            RichTextBox2.Text = LastLine
            '-------------
            Dim Lines2() As String = IO.File.ReadAllLines(My.Resources.TempFi)
            Dim LastLine2 As String = Lines(Lines.Length - 1)
            RichTextBox3.Text = LastLine2
            '-------------
            Dim conf As String
            conf = RichTextBox2.Text & RichTextBox1.Text & RichTextBox3.Text
            '-------------
            'sauvegarde
            IO.File.WriteAllText(SaveFileDialog1.FileName, RichTextBox1.Text)

Toujours la même erreur...
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
11
Loll ouais ok

D'après ce que tu nous mets là, clair que ca te donne une erreur si tu essaie d'ouvrir le fichier My.Resources.tempD

Content d'avoir pu t'aider, et bonne continuation...