begin process at 2010 02 10 10:54:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Probleme listage fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme listage fichiers

mercredi 25 juillet 2007 à 21:15:43 | Probleme listage fichiers

Taron31

Membre Club
Bonjour, je souhaite lister tous les fichiers du disque dur, et j'ai un probleme dans ce code la :

void list_hd(char *szHD)
{
    WIN32_FIND_DATA wfd;
   
    DWORD dwLen, dwLenHD, dwNB = 0;
    BOOL bTemp;
   
    HANDLE hFile = FindFirstFileA(szHD, (LPWIN32_FIND_DATAA)&wfd);
    dwLenHD = strlen(szHD) + 10;

    if(hFile == INVALID_HANDLE_VALUE) {
        fprintf(stderr, "GetLasError! %d\n\n", GetLastError());   
        return;
    }

    do {
   
        if(dwNB <= 2) dwNB++;
        if((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && dwNB > 2 ) {
            dwLen = WideCharToMultiByte(CP_ACP, 0, wfd.cFileName, -1, NULL, 0, NULL, &bTemp);
           
            LPSTR lpDir  = new CHAR[dwLen];
            LPSTR lpPath = new CHAR[dwLen+dwLenHD];
           
            ZeroMemory(lpDir, dwLen);
            ZeroMemory(lpPath, dwLen+dwLenHD);

            WideCharToMultiByte(CP_ACP, 0, wfd.cFileName, -1, lpDir, dwLen, NULL, &bTemp);

            sprintf(lpPath, "%s\b\b\b%s\\*.*", szHD, lpDir);
            fprintf(stdout, "PATH: %s\n", lpPath);

            list_hd(lpPath);

            delete []lpDir;
            delete []lpPath;
        }
       
    } while(FindNextFile(hFile, &wfd));
   
    FindClose(hFile);
}

int main(int argc, char *argv[])
{
    list_hd("C:\\");

    return 0;
}


En effet, lorsque je trouve un dossier (& FILE_ATTRIBUTE_DIRECTORY), je reconstruit le path pour ensuite le renvoyer à la même fonction, faire de la récusivirté quoi... mais après avoir appelé cette fonction, la fonction FindFirstFile me renvoie un INVALID_HANDLE_VALUE avec le code erreur 123 (mauvais path), ce que je ne comprends pas...

Si vous pouviez m'indiquer d'ou pourrait provenir l'erreur... merci beaucoup
mercredi 25 juillet 2007 à 22:23:09 | Re : Probleme listage fichiers
jeudi 26 juillet 2007 à 14:35:18 | Re : Probleme listage fichiers

Taron31

Membre Club
oui merci, c'est pas je veux faire le faignant mais sinon à partir de mon petit code, une petite modification ne pourrait-elle pas le faire fonctionner ??

merci
jeudi 26 juillet 2007 à 14:52:18 | Re : Probleme listage fichiers

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

pourquoi appeler version ansi pour convertiur ensuite en unicode ?

Cette daube de sprintf() n'a rien à faire dans du code Windows (hors formatage facile d'un flottant).

2 allocs mémoire par tour qui ne seront désallouées qu'à la fin de la récursion complète, c'est suicidaire et surtout inutile (voir mon exemple).

Faut afficher ce que tu obtiens avec sprintf, tu sauras si le prob est justifié.

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : char, wfd, dwlen, lppath, lpdir


Répondre à ce message

Sujets en rapport avec ce message

Probleme GTK [ par Jo ] Salut,Quelqu'un pourrait me dire ou est l'erreur ?char * fichier; char *z;gchar *temp;temp = gtk_entry_get_text(GTK_ENTRY(Data));fd1= fopen((char *)te débutant butant... [ par grboss ] Avec Dev C++, des programmes bidons ne fonctionnent pas, car ils utilisent la fonction getch(); par exemple.avec turbo c++, ca passe, mais, il y a une ecriture fichier txt turboC++ [ par idk ] qqun connais une fonction, qui te place le cursor, (dans un fichier),CAD qui renvoie à la ligne suivante exemple char prenom="tom"char nom="bauq" Et d int to char ! [ par nullspace ] Voila mon problème !J'ai une résultat sous forme de variable INT, et je veux que ce résultat soit affecté à une variable de type CHAR.Genre, si j'ai 6 soustraire 2 heures [ par Olivier ] Salut,qqn pourrait me donner une fonction qui permettrait de soustraire 2 heures ?char * SubHour(char *,char *);Remarques :02:24:12-02:24:12=24:00:000 pb avec conio je cher cherche l'erreur( j'ai merde sur le mess precedent) [ par kin ] portpia.cpp#include"PortPiaPc.h"void main(){ PortPiaPc inst; inst(0x320,0x0f);}PortPiaPc.cpp#include "PortPiaPc.h"#include "conio.h"PortPiaPc::PortPia manipulation desformules logiques : URGENT [ par The_Legacy ] Bonjour, je suis en train de développer un petit programme qui permet d'évaluer des expression logiques telles que ((a et b) ou (c et (non d))).A part Debutant : ecrire et lire un fichier txt [ par manu ] Bonjour a tous.Je debute, aussi desole.... :)Je cherche donc a ecrire dans un fichier txt, puis a lire ce fichier ligne a ligne, faire un split / expl convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci Conversion int -> char * [ par Xentor ] Bonjour tout le monde, et merci de lire mon message parce que je suis un vrai débutant !Je voudrais savoir comment convertir un entier en tableau de c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,259 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales