1. #1
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut Soucis avec File.exists

    Bonjour à tous,
    j'essaie de tester la présence dans un repertoire de chemin de type locale de ce type

    ‪D:\Documents\test.pdf

    File.exists me retourne toujours false


    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If DataGridView1.Rows.Count <> 0 Then
                For I As Long = 0 To DataGridView1.Rows.Count - 1
                    Dim Lienfichier As String = DataGridView1.Rows(I).Cells(0).Value.ToString
     
                    Dim test As Boolean = File.Exists(Lienfichier)
                    If test = True Then
                        DataGridView1.Rows(I).Cells("ColLien").Value = True
                    Else
                        DataGridView1.Rows(I).Cells("ColLien").Value = False
                    End If
                Next
            End If
    j'ai essayer la commande openread avec ce format de path mais ne fonctionne pas erreur de syntaxe du Path apparement ?

    Cdt

  2. #2
    Membre actif Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    août 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 164
    Points : 246
    Points
    246

    Par défaut

    Salut,
    Il faut utiliser la classe FileInfo et la propriété Exists
    Essaye comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim FileInfoTest As New FileInfo((Lienfichier) 
    
                    If FileInfoTest = True Then
                        DataGridView1.Rows(I).Cells("ColLien").Value = True
                    Else
                        DataGridView1.Rows(I).Cells("ColLien").Value = False
                    End If
    Merci de ainsi que d'utiliser les boutons et

  3. #3
    Membre émérite Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2011
    Messages : 1 599
    Points : 2 965
    Points
    2 965

    Par défaut

    Salut,

    (je suppose que le fichier testé est censé existé)
    as-tu essayé d'externaliser un simple File.Exists(@"‪D:\Documents\test.pdf"); pour voir si ça vient de là ou de ton implémentation ?
    Plus je connais de langages, plus j'aime le C.

  4. #4
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    Bonjour,
    Fileinfo ne me retourne pas un état boolean..

    Qu'appelez vous externalisé ?

    Merci

  5. #5
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    c'est fileinfotest.exists que je dois utilisé mais ca me retourne l'erreur suivante

    Une exception non gérée du type 'System.NotSupportedException' s'est produite dans mscorlib.dll
    Informations supplémentaires : Le format du chemin d'accès donné n'est pas pris en charge.

    et le chemin c'est D:\Documents\test.pdf

    je ne comprends pas ou est l'erreur de format?

  6. #6
    Membre émérite Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2011
    Messages : 1 599
    Points : 2 965
    Points
    2 965

    Par défaut

    Citation Envoyé par Ashireon Voir le message
    Qu'appelez vous externalisé ?
    Tu vires la boucle, tu vires la lecture des valeurs dans le DGV ... tu vires tout et tu testes simplement la ligne qui est censée être exécutée (soit celle que j'ai mise plus haut). Un peu comme un test unitaire. Si ça retourne true c'est que l'algo est à mettre en cause, sinon c'est du côté dudit fichier qu'il faudra regarder.
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    Donc la ca me retourne True

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Dim test As Boolean = File.Exists("D:\documents\test.pdf")
    sans le @ car il n'en veut pas..

    si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Lien As String = "D:\documents\test.pdf"
            Dim test As Boolean = File.Exists(Lien)
    en chargeant une variable ça fonctionne
    mais si la variable est chargé par le datagridview paf non fonctionne plus pourtant en mettant un Espion j'ai le même string pour le chemin du fichier

  8. #8
    Membre émérite Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2011
    Messages : 1 599
    Points : 2 965
    Points
    2 965

    Par défaut

    Désolé pour le @, c'est spécifique à C# (pour dire que les antislashes ne servent pas à échapper le char suivant).

    Je vois que tu as fait du pas-à-pas pour voir la valeur de la chaine passée en paramètre (bonne initiative), par contre as-tu vérifié que le retour de Exists était réellement false ?
    Une même fonction avec un même paramètre doit retourner le même résultat, il serait donc possible que ce soit ton DataGridView1.Rows(I).Cells("ColLien").Value = True qui ne fonctionne pas et qui t'induit en erreur.
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Membre actif Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    août 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 164
    Points : 246
    Points
    246

    Par défaut

    Citation Envoyé par r.morel Voir le message
    Salut,
    Il faut utiliser la classe FileInfo et la propriété Exists
    Essaye comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim FileInfoTest As New FileInfo((Lienfichier) 
    
                    If FileInfoTest = True Then
                        DataGridView1.Rows(I).Cells("ColLien").Value = True
                    Else
                        DataGridView1.Rows(I).Cells("ColLien").Value = False
                    End If

    J'avais oublier le .Exists :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim FileInfoTest As New FileInfo((Lienfichier) 
    
                    If FileInfoTest.Exists = True Then
                        DataGridView1.Rows(I).Cells("ColLien").Value = True
                    Else
                        DataGridView1.Rows(I).Cells("ColLien").Value = False
                    End If
    Merci de ainsi que d'utiliser les boutons et

  10. #10
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    En fait j'ai fait un test en passant par une variable pour être sur que c'est File.exists le soucis

    la variable ( Reflet de file.exists) est à False alors qu'elle devrait être à true

    Sachant que les données transit de MySQL-->Connexion ODBC--->Dataset/Table---->Datgridview1

    J'ai fais un test en lisant la datatable idem retour False...

    GRrr

  11. #11
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    Que ce soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim Test as boolean = file.exists(LienFichier)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim Fileinfotest As New FileInfo(Lienfichier)
     Dim Test As Boolean = Fileinfotest.Exists
    J'ai le même bug Lienfichier n'est pas au bon format pourtant la valeur de la variable est bonne
    a partir du fait que ca soit une donnée provenant de la sgbd via datatable ou gridview ce n'est plus bon
    alors que si je charge une variable avec le chemin d'accés c'est ok

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur .Net et Delphi
    Inscrit en
    juillet 2002
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .Net et Delphi
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2002
    Messages : 556
    Points : 1 265
    Points
    1 265

    Par défaut

    Bonjour,

    Ca sent le caractère pourri ça. Tu peux tester de comparer le chemin que tu lis en base avec le chemin en dur et voir s'ils sont égaux (ce qui m'étonnerait). Si ce n'est pas le cas, tu peux visualiser ta chaine de caractère en Hexa pour voir d'où vient la différence.

  13. #13
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    Je viens de faire Strcompare

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim val As Integer = StrComp(Lienfichier, "D:\documents\test.pdf")
    Val vaut 1 c'est dire que "D:\documents\test.pdf" préce en alphanumerique la variable
    donc elles ne sont pas égales. Sinon j'aurai eu 0 comme retour
    peut on détérminer le caractère qui foire?

  14. #14
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    j'ai réussi a résoudre le problème en virant le premier caractere sortant du datagridview.
    J'ai un caractère spéciale non affichable apparemment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Lienfichier = Mid(Lienfichier, 2, Lienfichier.Length - 1)
     
    Dim Fileinfotest As New FileInfo(Lienfichier)
                        Dim Test As Boolean = Fileinfotest.Exists
     
                        If Test = True Then
                            DataGridView1.Rows(I).Cells("ColLien").Value = True
                        Else
                            DataGridView1.Rows(I).Cells("ColLien").Value = False
                        End If
                    Next
    Du coup la çà fonctionne certainement un caractère spécial provenant de la base de donnée enfin je suppose

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur .Net et Delphi
    Inscrit en
    juillet 2002
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .Net et Delphi
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2002
    Messages : 556
    Points : 1 265
    Points
    1 265

    Par défaut

    Evite Mid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lienfichier = Lienfichier.SubString(1)
    Maintenant si c'est toi qui renseigne la base, le mieux serait de savoir pourquoi ce caractère est là plutôt que de contourner le problème

  16. #16
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    C'est une base de données MySQl local pour mes essais tests etc..;
    je remplis des valeurs via Mysql Workbench , j'ai vérifié dans la table de la base de données il n y a rien au premier caractère.

    Je viens de changer le type de la colonne de la base de donnée qui était en Varchar en Longtext comme type depuis ca marche.
    Je suis pas un pro de mysql mais c'est ce que j'ai trouve de plus facile a mettre en oeuvre pour des essais

  17. #17
    Membre émérite Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2011
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mars 2011
    Messages : 1 599
    Points : 2 965
    Points
    2 965

    Par défaut

    Re,

    juste par curiosité : quel était le caractère en première position qui posait problème ?
    La(les) valeur(s) hexa est (sont) la (les) bienvenue(s).
    Plus je connais de langages, plus j'aime le C.

  18. #18
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    août 2012
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : août 2012
    Messages : 415
    Points : 422
    Points
    422

    Par défaut

    Aucune idee
    Je n'ai pas pris le temps de chercher dans le détail.
    Cdt

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

Discussions similaires

  1. Soucis avec File
    Par Contrec dans le forum Débuter
    Réponses: 8
    Dernier message: 16/04/2010, 11h10
  2. Problème avec File.Exists
    Par kazylax dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/06/2009, 15h40
  3. Problène avec file.exists sous unix
    Par Nalfeim dans le forum IO
    Réponses: 2
    Dernier message: 06/05/2009, 14h23
  4. File.exist avec une partie du nom seulement
    Par kahya dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 18/01/2008, 12h04

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