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++Builder Discussion :

findfirst et findnext [D�butant]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2011
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 788
    Par d�faut findfirst et findnext
    Bonjour,
    Quoique vieux routard en C, je suis confront� dans l'urgence � la compilation d'une partie de mes sources en ++. Probl�me ici: Le findfisrt donne bien un r�sultat 0, mais le findnext suivant fournit un r�sultat -1. De plus, l'affichage �cran est abberrant. Ma source est toujours en C, le passage en ++ se fera plus tard. Merci de m'aider.
    Edgar.

    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
    51
    52
    53
    54
    55
    56
    57
    #include <dir.h>
    #include <stdio.h>
     
    #pragma warn -par
    void main(int argc,char *argv[])
    {
    struct ffblk f;
    int done;
    long totfiles=0L,totsize=0L;
     
    done=findfirst("*.*",&f,0x3f);
    while(!done) {
        printf("%s %ld",f.ff_name,f.ff_fsize);
        if(*f.ff_name=='.') printf(" dir");
        printf("\x0d\x0a");
        totfiles++; totsize+=f.ff_fsize;
        done=findnext(&f);
        }
    findclose(&f);
    printf("%ld fichiers, %ld bytes\n",totfiles,totsize);
    }
    #pragma warn .par
     
     
    /* ----------------------------------------------------------------------------
    Dans dir.h (Borland C++builder6), on trouve:
     
    struct  ffblk   {
        long            ff_reserved;
        long            ff_fsize;
        unsigned long   ff_attrib;
        unsigned short  ff_ftime;
        unsigned short  ff_fdate;
        char            ff_name[MAXPATH];
    };
     
    int         _RTLENTRYF _EXPFUNC     findfirst( const char _FAR *__path,
                                        struct ffblk _FAR *__ffblk,
                                        int __attrib );
    int         _RTLENTRYF _EXPFUNC     findnext( struct ffblk _FAR *__ffblk );
    int         _RTLENTRYF _EXPFUNC     findclose( struct ffblk _FAR *__ffblk );
    ---------------------------------------------------------------------------- */
     
    /* ----------------------------------------------------------------------------
    Résultats compilation & link: (effectués sous dos)
    C:\Program Files\Borland\CBuilder6\src>bcc32 -WCR -K mydir.c 
    Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland
    mydir.C:
    Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland
    ---------------------------------------------------------------------------- */
     
    /* ----------------------------------------------------------------------------
    Sortie écran du programme: (effectués sous dos)
     65535 -->parfois aussi 0
     
    1 fichiers, 65535 bytes
    ---------------------------------------------------------------------------- */

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut,
    C++ Builder ne peut pas cr�er des applications DOS
    par contre on peut cr�er des applications consoles

    Da ns ton code le param�tre attrib pose un probl�me (0x3F) suivant l'OS
    il est pr�f�rable d'utiliser une combination des attributs

    code fonctionnel ci-dessous
    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
     
    struct ffblk f;
      int done;
      long totfiles=0L,totsize=0L;
      done = findfirst(dir_name, &f, FA_NORMAL|FA_DIREC|FA_ARCH);
     
      /* Scan all files that mach */
      while (!done)
      {
     
    	if(f.ff_attrib&FA_DIREC) printf("%s [dir]",f.ff_name);
    	else
    	printf("%s %ld",f.ff_name,f.ff_fsize);
    	printf("\x0d\x0a");
    	totfiles++; totsize+=f.ff_fsize;
    	done = findnext(&f);
      }
     
      /* Close the find handle */
      findclose(&f);
    cdlt
    Images attach�es Images attach�es  
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  3. #3
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2011
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 788
    Par d�faut
    Hello,
    D�sol� pour le retard.

    Citation Envoy� par DjmSoftware Voir le message
    Dans ton code le param�tre attrib pose un probl�me (0x3F) suivant l'OS
    il est pr�f�rable d'utiliser une combination des attributs
    J'ai essay� ceci:
    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
     
    void main(int argc,char *argv[])
    {
    struct ffblk f;
    int done;
    long totfiles=0L,totsize=0L;
     
    done=findfirst("*.*",&f,FA_RDONLY|FA_NORMAL|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH);
    while(!done) {
    	printf("%s %ld",f.ff_name,f.ff_fsize);
    	if(*f.ff_name=='.') printf(" dir");
    	printf("\n");
    	totfiles++; totsize+=f.ff_fsize;
    	done=findnext(&f);
    	}
    findclose(&f);
    printf("%ld fichiers, %ld bytes\n",totfiles,totsize);
    }
    H�las, toujours le m�me r�sultat. Cela peut-il venir de la commande de compilation? Celle que j'utilise:
    bcc32 -WCR -K %1.c

    Merci en tout cas pour l'aide.
    Edgar.

  4. #4
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    a tu essay� de compiler et linker ton fichier depuis l'EDI(C++ Builder)
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  5. #5
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2011
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 788
    Par d�faut
    Hello,
    Non, je n'ai pas essay�. C'est une connaissance qui m'a dit utiliser bcc32. Je ne sais d'ailleurs pas comment faire: je viens de charger ma source (File, Open) e assay� F9,F8,F7, mais l'edi (borland c++ builder 6 entreprise) travaille toujours sur un projet! Impossible de trouver un compiler/linker quelquepart.

  6. #6
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    Je t'ai d�ja donn� une r�ponse
    Menu : Fichier|nouveau|Autre|Expert Console
    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  7. #7
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2011
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 788
    Par d�faut
    Hello,
    Excuse-moi, je n'avais pas saisi.
    Bon, c'est fait, r�sultat identique. C'est � n'y rien comprendre. Le programme ne se plante pas, j'ai invariablement le r�sultat "1 fichiers, (nbr al�atoire) bytes"
    Apr�s plusieurs run, on dirait que findfirst() n'initialise pas la structure f, et qu'on pointe dans les �toiles!
    G�n�r� avec tcc/tlink et ex�cut�, r�sultat correct.
    Je remets ma source finale, tu peux peut-�tre la tester chez toi?
    Quoi qu'il en soit, merci pour ton aide.

    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
    #include <dir.h>
    #include <dos.h>                /* Pour #define FA_  */
    #include <stdio.h>
     
    #pragma warn -par
    void main(int argc,char *argv[])
    {
    struct ffblk f;
    int done;
    long totfiles=0L,totsize=0L;
     
    done=findfirst("*.*",&f,FA_RDONLY|FA_NORMAL|FA_HIDDEN|FA_SYSTEM|FA_LABEL|FA_DIREC|FA_ARCH);
    while(!done) {
    	printf("%s %ld",f.ff_name,f.ff_fsize);
    	if(f.ff_attrib&FA_DIREC!=0) printf(" dir");
    	printf("\n");
    	totfiles++; totsize+=f.ff_fsize;
    	done=findnext(&f);
    	}
    findclose(&f);
    printf("%ld fichiers, %ld bytes\n",totfiles,totsize);
    }
    #pragma warn .par

  8. #8
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    as tu essay� le code que j'ai post�
    il est parfaitemnent fonctionel
    il me semble qu'il y a u probl�me avec
    avec les filtres

    d'autre part je te conseille d'utiliser les fonctions de l'API win 32
    FindFirstFile,FindNextFile,FileClose

    cdlt
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  9. #9
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2011
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 788
    Par d�faut
    Hello,
    Tu a mis le doigt dessus. Apr�s 20 petites minutes de test, en rajoutant les attributs les uns apr�s les autres, c'est FA_LABEL qui envoie findfirst() dans les �toiles. Tous les autres, seuls ou associ�s, donnent le r�sultat attendu. Je vais enfin pouvoir avancer!
    Concernant les API Win32, je les emploie depuis le debut puisque les tailles d�clar�es sont diff�rentes entre dos et win.
    Un grand merci � toi.
    Cordialement,
    Edgar.

  10. #10
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    19
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mars 2015
    Messages : 19
    Par d�faut Lire plusieurs fichier.txt d'un repertoir sous Builder c++
    Salut ,
    SVP quelqu'un a une id�e comment lire plusieurs fichiers.txt d'un repertoir sous Builder c++ ... please help

    Merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. FindFirst et FindNext avec accents
    Par joce21 dans le forum Langage
    R�ponses: 16
    Dernier message: 19/01/2012, 15h52
  2. Plusieurs filtre dans FindFirst , FindNext
    Par 0x44-0x43-0x53-0x43 dans le forum Langage
    R�ponses: 1
    Dernier message: 05/07/2010, 18h37
  3. FindNext et FindFirst
    Par adec62360 dans le forum Pascal
    R�ponses: 1
    Dernier message: 21/05/2007, 19h09
  4. Comment je peux utiliser Findnext FindFirst
    Par zizo89 dans le forum Delphi
    R�ponses: 5
    Dernier message: 17/05/2007, 16h19
  5. comment utiliser Findfirst et FindNext
    Par oumarsaw dans le forum VB 6 et ant�rieur
    R�ponses: 9
    Dernier message: 18/04/2006, 11h48

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