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

VB.NET Discussion :

Caractères non conformes dans le chemin d'accès.


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Caractères non conformes dans le chemin d'accès.
    Bonjour a tous ,

    Je programme depuis assez longtemps en VB.NET et il y a 3 jours je suis tomber sur une erreur :
    Caractères non conformes dans le chemin d'accès.
    Voici la ligne erronée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim lignes As String() = File.ReadAllLines(Directory.GetCurrentDirectory & "\Infos_sur_client\" & nom_client & ".txt"
    J'ai dfait ue serie de tests :

    --> si je remplace le "Directory.GetCurrentDirectory" par le repertoire cilbler, ca ne fonctionne pas.

    --> si par contre je remplace le "nom_client" par un nom de client ca fonction.

    hors, j'ai verifier en placeant un espion sous visual studio et "nom_client" a bien la bonne valeur.

    PS : J'ai bien verifier et "nom_client" est bien une variable de type string .

    quelqu'un pourrait -il m'aider? svp

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    windows interdit certains caractères dans les fichiers comme ? : * / \ etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    et donc? coment je fait? par quoi je remplace?
    j'ai deja essayer le "\\" comme en C mas ca ne marche pas et de plus c'est bizerd car a d'autres endroit ca fonction normalement ...

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Windows interdit ces caractères. Tu les remplace par ce que tu veux comme caractère autorisé. Ces caractères interdits doivent disparaitre du chemin d'accès
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    L'erreur ne doit pas venir de la pour plusieur raison :

    --> si je remplace "nom_client" par sa valeur ca fonctionne hors ces caractere sont toujour la

    --> je croit que ces caracteres sont interdit dans un nom de dossier ou de fichier pas pour separer les different dossier.

    --> j'utilise ces caractere dans d'autre chemin d'acces et ca fonctionne ...

    d'autres idee?

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Modifie ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim chemin as String = Directory.GetCurrentDirectory & "\Infos_sur_client\" & nom_client & ".txt"
    Dim lignes As String() = File.ReadAllLines(chemin)

    Met un point d’arrêt sur la seconde ligne, et dit nous ce que contient la variable chemin
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Accesoirement, quand on doit fabriquer des path à l'aide de chaines de caractères dans un programme, et qu'on veut programmer un tant soit peu proprement,on ne concatène jamais les chaines de caractères mais on utilise les méthodes statiques de la class Path, comme Path.Combine par exemple. Cela évite bien des sources d'erreurs.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Essaies de faire des .Trim sur tes String récupéré peut être

  9. #9
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Il existe la méthode GetInvalidPathChars qui te permet de connaître les caractères non autorisés.

    Tu mets ça dans un Replace en remplaçant par le caractère autorisé que tu veux.

    Sinon peut-on voir le contenu de la variable Chemin ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Moi j'utilise ça dans mon appli en cours et ça marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Function generationCheminPDF(ByVal langue As String)
            'Génération du chemin du pdf
            pdf = "\\ServeurW\" & CBMarque.Text.Trim & "\" & CBGamme.Text.Trim & "\" + DGVModele.SelectedCells.Item(3).Value.ToString.Trim &
                        "\Galerie_photos_MX\Fiche_tracteur\" & DGVModele.SelectedCells.Item(4).Value.ToString.Trim & "_" & langue & ".pdf"
            Return pdf
        End Function

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    bon, merci pour vos reponse.

    j'ai fait plusieur test :

    si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim chemin As String = Directory.GetCurrentDirectory & "\Infos_sur_client\" & nom_client & ".txt"
            Dim lignes() As String = File.ReadAllLines(chemin)
    la valeur de chemin est :
    "C:\Users\Moi\Desktop\Doc\Programmation\Projets\VB.NET\Gestion_client\Gestion_client\bin\Debug\Infos_sur_client\test.txt"

    Le chemin est juste mais ca ne fonctionne pas, j'ai de nouveau la meme erreur.



    si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim lignes() As String = File.ReadAllLines(Path.Combine(Directory.GetCurrentDirectory, "\Infos_sur_client\", nom_client, ".txt"))
    J'obtien toujours la meme erreur

    je suis un peut perdu ....

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    LE chemin semble correct.

    Tu es sûr que l'erreur vient bien de cette ligne ? Elle ne serait pas déclenchée par une autre ligne dans ton code ?
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    je ne voit pas de ou ça peut venir d'autre...

    - chemin est initialiser dans la sub

    - lignes est initialiser aussi dans la sub

    - nom_client, qui est utiliser dans dans "chemin" est un paramètre de la sub et je rappelle que ça valeur est correct et que si je remplace la variable par sa valeur pour déterminer "nom_client", il n'y a aucune erreur...


    PS : depuis tout a l'heure on parle d'erreur, mais ça aparait comme une exception... :
    ArgumentException
    Caractères non conformes dans le chemin d'accès.

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Bonjour,

    Je remonte ce topic parce que j'ai à peu près le même souci... J'ai déjà posté sur ce sujet (Cf un peu plus haut), parce que ma solution marchait très bien mais comme le mieux est l'ennemi du bien en voulant faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Function generationCheminPDF(ByVal langue As String)
            'Génération du chemin du pdf
            Dim titreFr As String = ""
            For Each row As DataGridViewRow In DGVTitres.Rows
                If row.Cells.Item(0).Value = 1 Then
                    titreFr = row.Cells.Item(2).Value.ToString.Trim.Replace(Path.GetInvalidPathChars, "_")
                End If
            Next
     
            pdf = "\\mailleux.com\doc\BASE_TRACTEURS\" & CBMarque.Text.Trim & "\" & CBGamme.Text.Trim & "\" + DGVModele.SelectedCells.Item(3).Value.ToString.Trim &
                        "\Galerie_photos_MX\Fiche_tracteur\" & titreFr & "_" & langue & ".pdf"
            Return pdf
        End Function
    le .Replace(Path.GetInvalidPathChars, "_") ne fonctionne pas du tout et je me retrouve avec l'exception

    ArgumentException
    Caractères non conformes dans le chemin d'accès.
    Or ce fameux replace devrait résoudre cette exception...

    Une idée ?

  15. #15
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Et en faisant le .Replace(Path.GetInvalidPathChars, "_") sur ta variable pdf ?

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    En relisant mon post j'ai eu la même idée

    Mais ça ne change rien, l'exception est quand même levée...

  17. #17
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par ostenhard Voir le message
    Et en faisant le .Replace(Path.GetInvalidPathChars, "_") sur ta variable pdf ?
    Path.GetInvalidPathChars retourne un tableau de caractères
    il faudrait donc faire une boucle pour faire un replace par caractère du tableau, sinon le replace va chercher une sous chaine de tous les caractères interdit à la suite ce qui n'est pas le cas
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  18. #18
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Path.GetInvalidPathChars retourne un tableau de caractères
    il faudrait donc faire une boucle pour faire un replace par caractère du tableau, sinon le replace va chercher une sous chaine de tous les caractères interdit à la suite ce qui n'est pas le cas
    Ah ben oui !!!

  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Ok Pol63 donc j'en suis rendu là :

    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
    Private Function generationCheminPDF(ByVal langue As String)
            'Génération du chemin du pdf
            Dim titreFr As String = ""
            For Each row As DataGridViewRow In DGVTitres.Rows
                If row.Cells.Item(0).Value = 1 Then
                    titreFr = row.Cells.Item(2).Value.ToString.Trim
                End If
            Next
            pdf = "\\mailleux.com\doc\BASE_TRACTEURS\" & CBMarque.Text.Trim & "\" & CBGamme.Text.Trim & "\" + DGVModele.SelectedCells.Item(3).Value.ToString.Trim &
                        "\Galerie_photos_MX\Fiche_tracteur\" & titreFr & "_" & langue & ".pdf"
            For Each s As Char In Path.GetInvalidPathChars
                pdf.Replace(s, "_")
            Next        
            Return pdf
        End Function
    Mais j'ai toujours la même exception de levée, je commence vraiment à être perdu là

  20. #20
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For Each s As Char In Path.GetInvalidPathChars
                pdf = pdf.Replace(s, "_")
            Next
    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For Each s As Char In Path.GetInvalidPathChars
                pdf.Replace(s, "_")
            Next

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2013, 23h33
  2. Réponses: 2
    Dernier message: 15/12/2011, 09h09
  3. [Winforms]Caractères non conformes dans le chemin d'accès
    Par Hemophilius dans le forum C++/CLI
    Réponses: 3
    Dernier message: 08/10/2008, 13h59
  4. Réponses: 1
    Dernier message: 19/05/2006, 19h57
  5. Problème de caractères non latin dans un formulaire
    Par Huntress dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2006, 13h34

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