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

C++ Discussion :

lister le contenus d'un dossier existant sous D:\


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut lister le contenus d'un dossier existant sous D:\
    bonjour à tous,
    J'ai développé une méthode qui liste le contenu d'un dossier et l'affiche dans un ListBox.
    J'ai eu de bon résultat lorsque le dossier existe sous c:\
    Mais le problème est lorsque le dossier est sous D:\ la fonction FindFirstFile retourne INVALID_HANDLE_VALUE

    Le code est comme suit:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    bool CMToolsDlg::FindRelatedFiles(string i_strPath)
    {
      WIN32_FIND_DATA FindFileData; 
      HANDLE hFind = INVALID_HANDLE_VALUE; 
      TCHAR* DirSpec; // directory specification 
    
      i_strPath.append("\\*.*");
      DirSpec = ConvertStringTchar(i_strPath);
      hFind = FindFirstFile((LPCWSTR)DirSpec, &FindFileData);
    
      if(hFind == INVALID_HANDLE_VALUE)
      {
        return false;
      }
    
      while(FindNextFile(hFind, &FindFileData) != 0)
      {
        m_FilesList.AddString(FindFileData.cFileName); \\m_FilesListest un listbox
      }
    
      FindClose(hFind);
    
      return true;
    }
    Merci pour votre aide

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    La fonction GetLastError est ton amie. Elle va te donner plus de précisions sur l'erreur rencontrée.

    C'est impossible de lister toutes les raisons pour lesquelles FindFirstFile pourrait échouer (droits d'accès, chemin incorrect etc). C'est pourquoi il vaut mieux demander au système ce qui s'est vraiment passé.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    J'ai essayé la fonction GetLastError et elle me retourne le message d'erreur suivant: "FindRelatedFiles failed with error 3: Le chemin d'accès spécifier est introuvable."

    Malgré que le chemin est : "D:\Automobile\01-tâches\Dev\T_000837\alivrer2"

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Es-tu sûr que ce répertoire existe ? avec ce nom là ?
    en particulier, je remarque qu'il y a un accent circonflexe dans le nom, ce qui, lors d'une conversion de chaines de caractères, peut provoquer des effets "funs".

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Par défaut
    Oui, le problème est du à l'accent.
    Merci phi1981

    Est ce qu'il y a une méthode pour le traitement des caractères spéciaux dans un string?

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    Là ça devient compliqué. AMHA, l'idéal est d'utiliser des chaines de caractères Unicode, via le type wstring, et les fonctions de Win32 qui prennent des caractères larges en paramètres (fonctions Win32 dont le nom se termine par W).
    Toutefois, il doit exister d'autres façons, puisque Windows gère les caractères accentués depuis une éternité, et ne gère Unicode que depuis Windows NT. Mais là honnêtement je connais pas.

Discussions similaires

  1. [XL-2003] Lister les fichiers dans les dossiers et sous dossiers
    Par doncamelo dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 14/07/2010, 10h41
  2. Réponses: 1
    Dernier message: 24/02/2009, 15h07
  3. Comment lister dossiers et sous dossiers
    Par sword999 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/08/2006, 11h36
  4. lister dossier et sous dossier
    Par wabit dans le forum C
    Réponses: 6
    Dernier message: 06/06/2006, 16h48
  5. [VB6]lister les dossiers et sous dossier
    Par Jacen dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/04/2006, 08h06

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