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

Visual C++ Discussion :

Tri de fichier selon type d'extension et nom


Sujet :

Visual C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut Tri de fichier selon type d'extension et nom
    Bonjour,

    J'ai dans mon pc, un dossier qui contient des fichiers de type .txt et qui sont
    enregistrés avec un nom dans lequel figure la date et l'heure à la
    quelle le fichier a été enregistré. De plus ces fichiers ont dans leurs noms deux types de texte TexteA et TexteB.

    En voici un exemple:
    TexteA_20050514_152938_.txt

    Je dois en fait trier dans un dossier le dernier fichier enregistré en
    date et ayant dans son nom le mot "TexteA" et dont la date est la plus
    récente. Et ensuite afficher le contenu de ce fichier dans une listbox.

    La fonction ci-dessous que j'ai faite recupere les noms des fichiers mais sans
    distinction du mot "TexteA", de plus je ne sais pas sortir de la boucle.
    je dois inclure un code pouvant prendre le dernier fichier en date.

    Je pense a utiliser la methode ftLastAccessTime, comment pourrais
    je faire?


    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
     
    int Cmaclasse::Cherche_Affiche_txt()
    {
     
    string chemin;
    HANDLE hfind;
    WIN32_FIND_DATA wfd;
     
    hfind = FindFirstFile ("C:\\dossier\\Donnes\\Resultats\\*.txt", &wfd);
     
    while (hfind!=INVALID_HANDLE_VALUE)
    {
    FindNextFile (hfind,&wfd);
    chemin=wfd.cFileName;
    TRACE ("Next file name is %s\n", wfd.cFileName);
    }
     
    FindClose(hfind);
     
    m_ctrlistnfo.AddString (chemin.c_str()); //ici j'affiche le nom du fichier 
                                                           //seulement
     
     
    return 0;
    }
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    pourquoi tu fais pas ca déjà ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FindFirstFile ("C:\\dossier\\Donnes\\Resultats\\TexteA*.txt", &wfd);
    ca te selectionnerait tous les fichiers commenceant par texteA

  3. #3
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Merci,

    pour cette très bonne remarque. Par contre pour la suite
    je ne voit pas trop bien comment je peux faire, j'utiliserai pour bien faire la methode ftLastAccessTime et ensuite creer une boucle qui triera tout et sortira le wfd qui a la plus grande valeur. Quel type de tri et Comment faire, je ne connais pas très bien les tris?

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    int CViewTestStereo::Cherche_Affiche_nfo()
    {
     
    string chemin;
    HANDLE hfind;
    WIN32_FIND_DATA wfd;
     
    CTime tim;
     
    hfind = FindFirstFile ("C:\\dossier\\Donnes\\Photos\\TexteA*.nfo", &wfd);
     
    while (hfind!=INVALID_HANDLE_VALUE)
    {
      FindNextFile (hfind,&wfd);
      chemin=wfd.cFileName;
      TRACE ("Next file name is %s\n", wfd.cFileName);
     
      tim=wfd.ftLastAccessTime;   // recupere le temps 
     
                  // fonction tri ?
    	 // tim=tim;
     
    	 //chemin=wfd.cFileName    //ici on prend la valeur max
     
    }
     
    FindClose(hfind);
     
    m_ctrlistnfo.AddString (chemin.c_str());
     
     
     
    	return 0;
    }

    Encore merci

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    tu peux utiliser un conteneur qui fait le tri, genre http://c.developpez.com/faq/cpp/?pag...TL_custom_sort

  5. #5
    Membre confirmé
    Profil pro
    Developer
    Inscrit en
    Juin 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Juin 2004
    Messages : 194
    Par défaut
    Merci,

    Je me rend compte que un tri n'est pas necessaire

    je devrais sequentiellement prendre la date la plus recente et le sauver et faire la comparaison avec le wfd suivant donc j'aurai un if et sans doute mettre ca dans la meem boucle mais comment faire pour en sortir une fois que j'aurais la valeur max?

    voici mon code de comparaison sequentiel:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    int CViewTestStereo::Cherche_Affiche_nfo()
    {
    CTime tim;
     
    string chemin;
    HANDLE hfind;
    WIN32_FIND_DATA wfd;
     
     
    hfind = FindFirstFile ("C:\\dossier\\Donnes\\Photos\\TexteA*.nfo", &wfd);
     
    chemin= wfd.cFileName ;
    tim=wfd.ftLastAccessTime;
    while (hfind!=INVALID_HANDLE_VALUE)
    {
     
         FindNextFile (hfind,&wfd);
          if ( tim > wfd.ftLastAccessTime)
          {
              tim=wfd.ftLastAccessTime;
              chemin= wfd.cFileName;
          }
     
     
    }
     
    FindClose(hfind);
     
    m_ctrlistnfo.AddString (sfilename.c_str());
     
    return 0;
     }
    }

    Ci le code ci-dessus est juste, le reste c'est l'affichage du chemin.

    Merci

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    hé bien un simple break; suffit dans ce cas....

Discussions similaires

  1. [XL-2010] Macro pour nommer un fichier selon un signet ou le nom d'une cellule
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/03/2014, 11h40
  2. Tri des fichiers selon le date ?
    Par genius4evers dans le forum C#
    Réponses: 2
    Dernier message: 29/09/2011, 10h27
  3. déplacer des fichiers selon leur extension
    Par chicabonux dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 12/10/2009, 16h42
  4. Réponses: 2
    Dernier message: 19/05/2008, 15h13
  5. [GetOpenFilename]ne montrer que les fichiers du type FinDenom.Extension
    Par mordrhim dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/05/2007, 10h00

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