1

Coment faites-vous pour parcourir recursivement des dossiers (surDOS/WINDOWS) ?
Perso, j'ai l'impression de sortir l'artillerie lourde (A cas de flux de fichiers -POSIX- et de chdir)...

2

Sous Win32, tu fais une fonction récursive qui utilise FindFirstFile, FindNextFile et FindClose (cf. http://msdn.microsoft.com/library/en-us/fileio/base/findfirstfile.asp).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

moi je fais du php, et j'utilise isdir, si oui alors on récurse (c'est quoi le bon terme en français?).
Cours et tutos Asm: http://membres.lycos.fr/sirryl

4

On porte l'operation au rang suivantsmile
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

5

Oui mais là tu dis pas qu'il faudra revenir!
Cours et tutos Asm: http://membres.lycos.fr/sirryl

6

J'ai utiliser ca pour lister mes mp3 (j'ai retirer la partie de selection de mp3)
WIN32_FIND_DATA wData;
void lister(LPCTSTR fichier,char chemin[MAX_PATH])
{
	char chemin1[MAX_PATH],chemin2[MAX_PATH],chemin3[MAX_PATH],chemin4[MAX_PATH];
	for(i=0;i<MAX_PATH;i++)
	{
		chemin1[i]='\0';
		chemin2[i]='\0';
	}

	for(i=0;i<(int)strlen(chemin);i++)
		chemin1[i]=chemin[i];

	for(i=0;i<(int)strlen(chemin1);i++)
		chemin2[i]=chemin1[i];
	strcat(chemin2,"*.*");

	HANDLE listing;
	listing=FindFirstFile(fichier,&wData);
 
	while((FindNextFile(listing,&wData)))
	{
	  nom=wData.cFileName;

		for(i=0;i<MAX_PATH;i++)
		{
			nom_complet[i]='\0';
		}
		for(i=0;i<(int)strlen(chemin1);i++)
			nom_complet[i]=chemin[i];
		for(i=strlen(chemin1);i<(int)strlen(chemin1)+(int)strlen(nom);i++)
			nom_complet[i]=nom[i-strlen(chemin1)];

		if(_chdir(nom_complet)==-1) trouvepoint="1";
		if((trouvepoint==NULL)&&((nom[0]!='.')||(nom[1]!='.')))
		{
			for(i=0;i<MAX_PATH;i++)
			{
				chemin3[i]='\0';
				chemin4[i]='\0';
			}
			strcpy(chemin3,nom_complet);
			strcpy(chemin4,nom_complet);

			strcat(chemin4,"\*.*");
			strcat(chemin3,"\");

			lister(chemin4,chemin3);
		}
		trouvepoint=NULL;
	 }
}

7

Je sais que c'est bourrin comme méthode, mais bon, c'est windows ...

8

ben moi ss unix (mais t'as demande sous windows) je fais juste un opendir de ./, je stock le fd pour pouvoir revenir a ce repertoire apres, puis chdir dans le repertoire passe en parametre a la fct, apres while readdir renvoit un truc, afficher le nom de l'element, si c un dossier rappeller la fonction. ensuite refermer le dir, faire chdir du premier fd pour revenir au repertoire d'avant, et return...

bah c'est comme un ls -R. c un peu crade mais ca marche bien et c pas enorme pt de vue code smile
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

9

grin

10

next(&f);          } }Voila ce que j'ai fait : /*  * You should set the drive before calling this function  * path must be a full path (not a relative path).  * filter should not contain path.  * Current directory must be set to path  */ void scandir(const char *path, const char *filter) {    struct ffblk f;    int done;    // First pass : get the selected files.    done = findfirst(filter, &f, 0);    while (!done)          {          // Do stuff          printf("%s\n",f.ff_name);          // Next file          done = findnext(&f);          }    // Second pass : Go through the sub-directories    done = findfirst("*", &f, FA_DIREC);    while (!done)          {          if (strcmp(f.ff_name, "..") && strcmp(f.ff_name, "."))                   {                   char NewPath[MAXPATH];                   sprintf(NewPath,"%s\%s", path, f.ff_name);                   if (chdir(NewPath) == 0)                      {                      scandir(NewPath, filter);                      chdir(path);                      }                   }          // Next file          done = find
Le gros avantage est que c'est compatible Gcc/Builder/Visual, sans recompilation.
Normalement.
Fonctionnant donc sous Dos/Windows/Unix.

11

Ca marche sous windows ca confus

12

Oué.

13

heurf smile