Impossibeulman
Messages postés32Date d'inscriptionjeudi 7 février 2008StatutMembreDernière intervention25 août 2008
-
7 juil. 2008 à 16:57
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
8 juil. 2008 à 21:09
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 ^^
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 7 juil. 2008 à 17:01
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)
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 7 juil. 2008 à 19:55
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é)
Impossibeulman
Messages postés32Date d'inscriptionjeudi 7 février 2008StatutMembreDernière intervention25 août 2008 7 juil. 2008 à 17:12
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 7 juil. 2008 à 18:11
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 !
Impossibeulman
Messages postés32Date d'inscriptionjeudi 7 février 2008StatutMembreDernière intervention25 août 2008 8 juil. 2008 à 10:29
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
---------------------------------------------------------------------------------------------