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 :

faire une traitement sur tous les fichiers de même extension


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut faire une traitement sur tous les fichiers de même extension
    Bonjour, je voudrai faire une traitement identique sur tous les fichiers d'une même extension dans un repertoire.
    ici l'extension est le .hpp et je voudrai faire une traitement sur *.hpp
    savez vous comment je peux m'y prendre merci.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tu listes tous les fichiers dans le dossier courant et tu regardes leur extension.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut
    serait-t-il possible d'avoir un exemple de code s'il vous plait

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Soit tu fais du portable avec Boost.Filesystem par exemple ou avec l'API système.

  5. #5
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Ca resemblerai à quoi comme code ?

    Merci d'avance.
    Colb.
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Comme je n'ai aucune indication de plateforme, ça ressemblerai à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pour chaque entrée dans le dossier spécifié
      Si l'entrée est un fichier et que son extension est ".hpp"
        Exécuter un traitement sur ce fichier
    Très difficile à formaliser...

  7. #7
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Hihi, vui ca je vois bien, mais le pbl vient plus du fait d'obtenir l'extention en string.
    Il y a surement moyen en splitant le string en utilisant "." comme clef non ?
    Ce serait plustot ca que je recheche

    A++
    Colb
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

  8. #8
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    En utilisant string::find_last_of avec string::substr, oui.
    L'itération est humaine; la récursion, divine.

  9. #9
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Super, je vous tiens au courant
    Je vais essayer ces fonctions...

    A bientôt
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

  10. #10
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Voila, j'ai trouvé un solution, en code . Sorry pour le temps que j'ai prix, mais j'ai mangé et j'ai étudié pour mon exam d'après demain .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Char splitParams[] = {'.'}; // parmaètre de split ex {'.', ';', ' '} etc 
    String* currentSplit[]; // variable de travail
    String* files = System::IO::Directory::GetFileSystemEntries(this->sourceDirectory->Text); // directory courante
    for (int i=0; i < files->Length; i++) // on parcourt tous les fichiers
    {
    	currentSplit = files[i]->Split(splitParams); // On split	
    	int j = currentSplit->Length; // on prend la longueur (en nombre d'indice)
    	if(currentSplit[j-1]->CompareTo("avi") == 0) // -1 car on commence à 0 pour les indices et "avi" si on veut par exemple que les fichiers avi (on peut mettre mp3 etc...)
    		MessageBox(NULL, "avi trouve !!", "Fenetre de test", MB_OK);
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

  11. #11
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut include
    Que faut il comme include pour que ça fonctionne? j'ai une erreur, le compilo ne reconnait pas system

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est du code managé, donc à priori plus lourd que ce qu'on t'a proposé jusqu'à présent.

  13. #13
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut windows
    Pour l'instant, je vais essayé de faire ça sous windows, quelqu'un a une idée de ce à quoi le code pourrait ressembler. Le code precedent ne fonctionne pas sous visual studio et apparement c lourd.
    Je n'arrive pas à me sortir de ce problème c'est incroyable. Lister les fichiers de même extension, c'est pas inimaginable non plus.

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Si, il marche, tu dois juste faire du code managé - Visual C++ >= 7.0 - et inclure les bons headers -> MSDN

  15. #15
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut vs 2005
    Je travaille sous visual studio. Le module C++ est visual c++ 2005. J'espère que ça suffit pour faire fonctionner ce programme. Concernant les headers, je ne trouve pas les bon. Serait - t il possible de me les indiquer.
    Merci

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    • Pour programmer sous Windows (API Win32) avec des fonctions comme FindFirstFile(), tout est dans <windows.h>. Si tu n'as pas ce header, c'est que tu dois télécharger le SDK (qui est séparé de Visual 2005 express).
    • Pour programmer sous .Net, tu peux programmer en C++/CLI sous Visual 2005.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 48
    Points
    48
    Par défaut findfile
    j'ai utiliser findfile que j'ai trouvé sur codeproject, ça fonctionne très bien.
    Merci @ bientôt

  18. #18
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Même si mon code ne fonctionne pas parfaitement chez toi (même si ca marche chez moi), inspire toi en pour ton code...

    En gros :

    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
     
    myFunction(current_root_directory)
    {
      for (all files of current_root_directory)
      {
       if(fonction recursive && this_file is a directory)
         myFunction(this_file);
       else if(this_file is a file)
       {
         // Ne pas tenir compte de tous le nom (C:\MyDocument\Bob\myFile.txt)
         // On ne retiens que myFile.txt
         split_params[]={'\\'};
         currentPath[] = this_file->split(split_params)
     
         // On vérifie l'extention now avec le nom de fichier qu'on a trouvé (sans le path)
         split_params2[]={'.'};
         currentFile[] = currentPath[currentPath->Lenght]->split(split_params2)
     
         // on vérifie l'extention :
         if(currentFile[currentFile->lenght] == 'txt') // txt est l'extention a traiter
           traiter(currentFile[0]);
       }
     }
    }
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

  19. #19
    Membre habitué Avatar de Colbix
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 266
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par radicalrider
    j'ai utiliser findfile que j'ai trouvé sur codeproject, ça fonctionne très bien.
    Merci @ bientôt
    Lol on l'a posté en même temps...
    Ben voila, même pas nesoin de mon meta code ...

    Bonne chance et bonne continuation
    Colb.
    Problème résolu ? N'oubliez pas le bouton ainsi que le "Pertinent". Ça fait du bien au forum.

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

Discussions similaires

  1. Exécuter une macro sur tous les onglets d'un fichier sauf un
    Par Marsama dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2011, 17h38
  2. faire une routine sur ts les fichiers xls d'un répertoire ?
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/03/2010, 23h45
  3. [XL-2003] Exécuter une macro sur tous les fichiers d'un dossier.
    Par ahmet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/10/2009, 09h49
  4. exécuter une commande sur tous les fichiers des sous dossiers
    Par Concombre Masqué dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 05/03/2009, 01h15
  5. [MySQL] Faire une recherche sur tous les champ commencant par ..
    Par bullrot dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/10/2008, 11h45

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