Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme listage fichiers [ Windows / Fichier & Disque ] (Taron31)

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é 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.