begin process at 2012 05 30 17:02:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Scaner de répertoire foireux !!


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

Scaner de répertoire foireux !!

samedi 21 mai 2005 à 17:54:29 | Scaner de répertoire foireux !!

melkiorlenecrarque

Membre Club

J'ai écris une fonction qui scanne les dossiers, sous dossiers et fichiers d'un répertoire,
Le probleme, c'est qu'elle ne fonctionne pas sous certaines partitions, notament la partition contenant Windows XP?

voici le code:

int Scan()
{
 i++;
 SetCurrentDirectory(chemin_temp[i]);
 hFichier[i]=FindFirstFile("*.*", &DataFichier[i]);
 if (hFichier[i]!=INVALID_HANDLE_VALUE)
 {
  if (!(DataFichier[i].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
  {
   if(IsMP3(DataFichier[i].cFileName))
   {
    SetDlgItemText(hDlg,IDC_EDIT_CIBLE, DataFichier[i].cFileName);//MessageBox (NULL, DataFichier[i].cFileName, "Fichier", MB_ICONINFORMATION);
    Sleep(10);
    UpdateWindow(hDlg);
   }
  }
  else
  {
   if(DataFichier[i].cFileName[0] != '.')
   {
    //MessageBox (NULL, DataFichier[i].cFileName, "Dossier", MB_ICONINFORMATION);
    lstrcpy(chemin_temp[i+1],"");
    lstrcat(chemin_temp[i+1],chemin_temp[i]);
    lstrcat(chemin_temp[i+1],"\\");
    lstrcat(chemin_temp[i+1],DataFichier[i].cFileName);
    Scan();
   }
  }
  while (FindNextFile(hFichier[i], &DataFichier[i]) != 0)
  {
   if (!(DataFichier[i].dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
   {
    if(IsMP3(DataFichier[i].cFileName))
    {
     SetDlgItemText(hDlg,IDC_EDIT_CIBLE, DataFichier[i].cFileName);//MessageBox (NULL, DataFichier[i].cFileName, "Fichier", MB_ICONINFORMATION);
     Sleep(10);
     UpdateWindow(hDlg);
    }
   }
   else
   {
    if(DataFichier[i].cFileName[0] != '.')
    {
     //MessageBox (NULL, DataFichier[i].cFileName, "Dossier", MB_ICONINFORMATION);
     lstrcpy(chemin_temp[i+1],"");
     lstrcat(chemin_temp[i+1],chemin_temp[i]);
     lstrcat(chemin_temp[i+1],"\\");
     lstrcat(chemin_temp[i+1],DataFichier[i].cFileName);
     Scan();
    }
   }
  }
  FindClose(hFichier[i]);
  i--;
  SetCurrentDirectory(chemin_temp[i]);
  if(i<0)
   return 0;
 }
 return 0;
}

BOOL IsMP3(char* nom_fichier)
{
 int len = lstrlen(nom_fichier);
 if( !(len<7) )
 {
  if( ((nom_fichier[len-3] == 'M') | (nom_fichier[len-3] == 'm')) & ((nom_fichier[len-2] == 'P') | (nom_fichier[len-2] == 'p')) & (nom_fichier[len-1] == '3') )
  {
   nb_mp3++;
   SetDlgItemInt(hDlg,IDC_EDIT_SOURCE,nb_mp3,TRUE);    
   return TRUE;
  }
  else
   return FALSE; 
 }
 else
  return FALSE;
}

void init()
{
 for(i=0;i<20;i++)
 {
  ZeroMemory(&hFichier[i], sizeof(HANDLE));
  ZeroMemory(&DataFichier[i], sizeof(WIN32_FIND_DATA));
  ZeroMemory(chemin_temp[i], 256);
  ZeroMemory(&DataFichier[i].cFileName, 256);
 }
 i=0;
 nb_mp3=0;
}

DWORD WINAPI ThreadProc(LPVOID lpParameter)     //   fonction executée par le thread
{
 init();
 lstrcpy(chemin_temp[i+1],"");
 lstrcat(chemin_temp[i+1],"c:");
 //i=0;
 //j=0;
 Scan();
 return 0;
}

Peut etre qu'il me manque une condition à tester pour passer certains fichiers (systeeme, inaccessible, ...)
Une idée ??


melkior le necrarque.



Cette discussion est classée dans : fichier, temp, chemin, cfilename, datafichier


Répondre à ce message

Sujets en rapport avec ce message

Récupération du chemin d'un fichier dans le 'path' [ par BettaSplendens ] Bonjour,j'ai 2 choses... d'un côté le chemin avec laquelle est lancée mon application, qui comporte "bien entendu" plusieurs répertoires.. désignons i splitter de fichier [ par 24Karas ] salut à tousEn fait je fais un splitter de fichier mais j'ai un probleme. il me rajoute 1 octet sur la découpe et 1 octet par fichier pour la reconsti renvoi de type char[] d'une fonction [ par sbouli ] Bonjour,Je suis ULTRA débutant et je cherche à faire une fonction renvoyant du char, voila le principe :char lectureIni (char section[], char clef[], GetPrivateProfileString ??? [ par brodeur ] Bonjour, est-ce que quelqu'un pourrait me dire si la fonction GetPrivateProfileString( .... ) peut etre utilisé pour tout les types de fichier text av Ouvrir flux sur fichier dont le chemin contient des espaces (besoin d'aide:))) [ par vychnou ] Es ce que quelqun saurait comment ouvrir un flux sur un fichier dont le nom ou le chemin contient des espaces?ex:string destination="c:\program files\ Chemin d'un fichier [ par gagah1 ] Salut à tous!Je voudrais savoir quelle fonction en API win32 dois-je appeller pour chercher le chemin d'un fichier quelconque?Merci d'avance pour les AIDEZ MOI!!! [ par W@$h! ] Voila mon pb :Dans 1 de mes prog, je créé un fichier temporaire qui recopie caractére par caractere un fichier :...FILE *fichier;FILE *temp;char Carac probleme de listage de fichiers [ par Kevin972 ] salut!! je ne comprends pas la fonction ne liste rien du tout.........al'aide!!!!!!!!!!!!!!!!! voici ma fonction:#include#include#include#include#in ouverture de fichier avec fopen() [ par jack_j ] Salut à tous!J'ai un petit problème avec du c. Je suis débutant et je cherche à ouvrir un fichier pour en extraire des données.Le nom et chemin du fic Fichier temporaire [ par goutbouyo ] Salut,Je crée un fichier temporaire de cette manière :FILE * temp;temp=tmpfile();fprintf(temp,"%s",tirage);fclose(temp);J'aimerais bien savoir où est


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,562 sec (3)

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