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 :

FindFirstFile paramètres c++


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut FindFirstFile paramètres c++
    Bonjour à tous!
    Cette "fonction" cherche des fichiers abc*.rtf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hSearch = FindFirstFile( "abc*.rtf" , &File);
    
    //------mon idée non géniale
    //remplacer les " " par une chaîne
    string xyz = "abc*.rtf"  ;
    hSearch = FindFirstFile( "xyz" , &File);//ne marche pas
    hSearch = FindFirstFile( xyz   , &File);//ne marche pas
    Je n'ai pas d'idée.
    Merci pour votre réponse.
    Sen.
    Cordialement.
    Sen.

  2. #2
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    FindFirstFile ne prend pas un string en paramètre.

    D'autre part il faudrait penser à revenir aux bases de la programmation pour lever des manques de compréhensions au niveau des noms de variables face à leur contenu ou encore concernant le typage de ces mêmes variables ...
    Vous postez du code ? Merci d'utiliser les balises
    Un message vous paraît pertinent ? Merci de le gratifier d'un vote positif
    Vous avez obtenu une réponse à votre question ? Merci d'utiliser le tag
    __________________
    Ingénieur R&D, diplômé en 2007 de l'ISIMA
    Docteur en informatique, diplômé en 2015 de l'EDSPI de Clermont-Ferrand

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Bonsoir et merci!
    Donc string xyz="abc*.rtf" n'est pas identique à "xyz"...
    Cette fonction FindFirstFile ne suporte qu'une expression entre " "...
    Pour la fonction que je crée,j'ai tourné la difficulté en écrivant "*.rtf"
    puis en chargeant un tableau
    Mais j'aurais préféré une solution plus générale d'où mon idée de string pour initialiser un élément de la fonction.
    Si qq trouve...
    Avec mes excuses pour ne pas employer le vocabulaire de la tribu.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    string RepTousFh(int nbfhrep,string cheminrep,string nomfh)
    {//Fc
    /*
      Date: 13/07/11 21:06
      Description:analyse rép. contenu  
    */
        int ntabl=nbfhrep;
        int qicl,icl=0;
        string tabl[ntabl]; 
        WIN32_FIND_DATA File;
        HANDLE hSearch;
        hSearch = FindFirstFile("*.rtf", &File);
        if (hSearch != INVALID_HANDLE_VALUE)
        {//if search
            do {//do
               icl++;
    //           cout<<icl<<" "<<File.cFileName<<endl;
               tabl[icl]=File.cFileName;
               string s1=tabl[icl].substr(2,2);
                      if (nomfh==s1)
                      {cout<<"num."<<icl<<" "<<tabl[icl]<<endl;;}
               }//do
               while (FindNextFile(hSearch, &File));
                      cout<<"sont sur la liste "<<nomfh<<":";
                      cin>>qicl;
                      cout<<"#"<<tabl[qicl]<<endl;
                      string RFfichierRF=tabl[qicl];
               return RFfichierRF;
               FindClose(hSearch);           
        }//if search      
    }//Fc
     
    //programme d'essai
    int zer;
    int main()
    {
        int nbfhrep=30;
        string cheminrep="c:\\dev-cpp\\";//ce répertoire contient beaucoup de.. 
                                         //..fichiers divers dont ceux que cherche à extraire
        string nomfh="RF";
        string TrouvFh=RepTousFh(nbfhrep,cheminrep,nomfh);
        cout<<""<<endl;
        cout<<"*"<<TrouvFh<<"*"<<endl;
        cout<<""<<endl;
        cout<<"0/0";cin>>zer;   
    }
    Cordialement.
    Sen.

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    En C, ce qui marche donc aussi en C++, tu ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char * xyz = "abc*.rtf";
    hSearch = FindFirstFile(xyz, &File);
    Tu te demandes sûrement ce que c'est que le type const char *. Malheureusement, ca ne s'explique pas dans un message sur le forum. C'est dans les cours de C que ça se passe.

    En C++ il y a le type string qui est plus parlant et plus simple d'usage que les types du C. Malheureusement FindFirstFile n'accepte que les chaînes du C et non celles du C++, donc tu dois convertir ta chaîne C++ (string) en chaîne C avant de la passer à FindFirstFile. Voici comment cela se fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string xyz = "abc*.rtf";
    hSearch = FindFirstFile(xyz.c_str(), &File);
    c_str, de "C string", est la fonction qui retourne la version C d'une chaîne C++.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    bonjour!
    Eh ben voila...Je vais expérimenter vite fait...
    Philosophiquement je préfère le C++ au C mais je suis prêt à composer avec l'ennemi.
    Merci,des nouvelles dans qq jours.
    Cordialement.
    Sen.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Voila!Merci!
    J'ai noté les modifications pour ceux que cela intêressera.

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    string RepTousFh(int nbfhrep,string cheminrep,string nomfh)
    {//Fc
    /*
      Date: 13/07/11 21:06
      Description:analyse rép. contenu  
    */
        int ntabl=nbfhrep;
        int qicl,icl=0;
        string tabl[ntabl]; 
        WIN32_FIND_DATA File;
        HANDLE hSearch;
     // hSearch = FindFirstFile("*.rtf", &File);//modifié     
    hSearch=FinfFirstFile(nomfh.c_str(), &File);//nouveau
    
    if (hSearch != INVALID_HANDLE_VALUE)
        {//if search
            do {//do
               icl++;
    //           cout<<icl<<" "<<File.cFileName<<endl;
               tabl[icl]=File.cFileName;
    //           string s1=tabl[icl].substr(2,2);//supprimé
    //                  if (nomfh==s1)                  {cout<<"num."<<icl<<" "<<tabl[icl]<<endl;;}
               }//do
               while (FindNextFile(hSearch, &File));
                      cout<<"ces fichiers sont sur la liste "<<nomfh<<":";
                      cin>>qicl;
                      cout<<"#"<<tabl[qicl]<<endl;
                      string RFfichierRF=tabl[qicl];
               return RFfichierRF;
               FindClose(hSearch);           
        }//if search      
    }//Fc
     
    //programme d'essai
    int zer;
    int main()
    {
        int nbfhrep=30;
        string cheminrep="c:\\dev-cpp\\";//ce répertoire contient beaucoup de.. 
                                         //..fichiers divers dont ceux que cherche à extraire
    //  string nomfh="RF";//modifié
        string nomfh="*bc.*";//le masque de recherche est facile à écrire
    
        string TrouvFh=RepTousFh(nbfhrep,cheminrep,nomfh);
        cout<<""<<endl;
        cout<<"*"<<TrouvFh<<"*"<<endl;
        cout<<""<<endl;
        cout<<"0/0";cin>>zer;   
    }
    Merci à tous et spécialement à Melem.
    Cordialement.
    Sen.

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

Discussions similaires

  1. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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