Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014
-
Modifié par Hellien le 1/01/2014 à 15:39
Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014
-
2 janv. 2014 à 14:25
Bonjour, j'ai fais le tour des internets et je n'ai trouvé aucune solution à mon problème et j'espere qu'un d'entre vous m'aidera à le résoudre car cela fait maintenant 1 semaine que je bloque...
Voici mon problème
Je selectionne un text dans la listbox make_box pour ensuite utiliser le text choisi comme variable dans un repertoire pour ouvrir le document text contenant justement ce text-ci (make_box.SelectedItem) .... Voici mon code
Dim streamer As IO.StreamReader Dim textfile As String
Private Sub model_box_Click(sender As Object, e As EventArgs) Handles model_box.Click
model_box.Items.Clear() Dim modeltxt As String = make_box.SelectedItem Dim debut As String = Directory.GetCurrentDirectory Dim milieu As String = "\" Dim fin As String = ".txt"
If make_box.Text = Nothing Then model_box.BackColor = Color.Red model_box.ForeColor = Color.Yellow Else model_box.BackColor = Color.White model_box.ForeColor = Color.Black
Exception: Thrown: "Caractères non conformes dans le chemin d'accès." (system.argumentException)
A System.ArgumentException was thrown: "Caractères non conformes dans le chemin d'Accès."
Thread: Main Thread [972]
et aussi
A first chance exception of type 'System.ArgumentException' occurred in mscorlib.dll
quelqu'un pourrait-il m'éclairer sur le problème car j'ai utiliser plusieurs méthode pour inclure ma variable dans un filepath mais rien a faire toujours la même erreur.......
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 Modifié par NHenry le 1/01/2014 à 16:17
A la place de :
textfile = Path.Combine(debut, milieu, modeltxt, fin)
Essayes :
textfile = Path.Combine(debut, modeltxt+ fin)
Et regardes aussi par un espion le contenu de ta variable.
Penses aussi à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (Onglet références des propriétés du projet).
vbNewLine -> Environment.NewLine
On peut discuter avec celui qui sait.
On peut discuter avec celui qui ne sait pas.
On ne peut pas discuter avec celui qui croit savoir.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014 1 janv. 2014 à 16:30
Sa na rien changer.... Same old story, puis si je desactive Microsoft.visualbasic je ne peux plus utiliser le powerpack, puis ma variable fin donne ".txt" puis là variable début ne contient pas de backslash à la fin du répertoire... Le chemin par contre contien des espaces est ce ue sa pourrait influencer?
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 1 janv. 2014 à 16:33
Peux-tu copier ici le résultat contenu dans les différentes variables ?
Car je peine à comprendre.
Sinon, quelles lignes pose pb si tu retires Microsoft.VisualBasic ?
Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014 1 janv. 2014 à 16:44
Dim streamer As IO.StreamReader Dim textfile As String
Private Sub year_box_Click(sender As Object, e As EventArgs) Handles year_box.Click year_box.Items.Clear() For i = 1970 To 2014 year_box.Items.Add(i) Next End Sub
Private Sub make_box_Click(sender As Object, e As EventArgs) Handles make_box.Click make_box.Items.Clear() textfile = "car.txt" streamer = IO.File.OpenText(textfile) Dim mystring() As String = streamer.ReadToEnd.Split(vbNewLine) make_box.Items.AddRange(mystring)
End Sub
Private Sub model_box_Click(sender As Object, e As EventArgs) Handles model_box.Click
model_box.Items.Clear() Dim modeltxt As String = make_box.SelectedItem Dim debut As String = Directory.GetCurrentDirectory Dim milieu As String = "\" Dim fin As String = ".txt"
If make_box.Text = Nothing Then model_box.BackColor = Color.Red model_box.ForeColor = Color.Yellow Else model_box.BackColor = Color.White model_box.ForeColor = Color.Black
textfile = Path.Combine(debut, modeltxt + fin)
streamer = IO.File.OpenText(textfile) Dim mystring() As String = streamer.ReadToEnd.Split(Environment.NewLine)
model_box.Items.AddRange(mystring)
End If
End Sub
Donc
le contenu de car.txt
Acura
Alfa Romeo
AMC
Audi
Aston Martin
Bentley
BMW
Buick
Cadillac
Chevrolet
Chrysler
etc...
Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014 1 janv. 2014 à 17:12
Bon Problème résolu ! J'ai utilisé modeltxt = modeltxt.Trim()
puis j'ai utilisé textfile = Path.Combine(debut, modeltxt + fin)
comme tu m'as indiqué NHenry Merci !
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 1 janv. 2014 à 17:55
Bonjour,
on peut légitimement se demander pourquoi tu fais les frais de l'utilisation d'une méthode à coût élevé (Path.combine, dont la vocation est de "décortiquer" des combinaisons plus évoluées) alors que tu as affaire, toi, à un cas simple qui ne nécessite qu'une bête concaténation.
NHenry
Messages postés15069Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 mai 2023158 1 janv. 2014 à 18:28
L'avantage principal de Path.Combine est de mettre les antislash là où ils n'ont pas été mis et qu'ils sont utiles.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 1 janv. 2014 à 18:46
Bonjour, NHenry,
Cette méthode sert également à "combiner" intelligemment deux chemins. Chacun des deux chemins est "analysé" et la méthode retourne le chemin résultant "logique."
Cette méthode est assez coûteuse du fait même de ses nombreuses fonctionnalités. Si j'en crois cette lecture :
http://msdn.microsoft.com/fr-fr/library/fyy7a5kt%28v=vs.110%29.aspx Cette méthode de VB.Net parait donc correspondre en tous points à la fonction PathCombine de la librairie "shlwapi.dll" de l'APi de Windows, dont la vocation n'est pas seulement de concaténer, mais également de "combiner" (chemins relatifs "partagés" compris).
Hellien
Messages postés5Date d'inscriptionmercredi 1 janvier 2014StatutMembreDernière intervention 2 janvier 2014 2 janv. 2014 à 14:25
C'est seulement parce que j'ai essayé plusieurs métode car je ne voyais pas l'espace devant ma variable... c'est donc la dernière formule que j'ai essayé, je pourrais effectivement m'en passer, mais je l'utilise aussi pour que le répertoire soit le bon autant en debug que si l'application serait build. Je ne savais pas par contre que cette fonction était lourde a se point merci !