[delphi] listing de fichier et sous-repertoires sans recursif ?

listing de fichier et sous-repertoires sans recursif ? [delphi] - Delphi/Pascal - Programmation

Marsh Posté le 30-01-2004 à 16:52:09    

bonjour a tous !
 
je cherche a lister tous les fichier se trouvant dans un repertoire ainsi que dans les sous-rep de celui-ci.
Pour ce qui est de lister dans le repertoire racine, pas de soucis, en revanche je cherche une methode non recursive pour parcourir tous les autres rep (en gros une sorte de parcours en profondeur main gauche sans recursif)
 
quelqu'un peut il me mettre sur la voie ? :)
merci d'avance

Reply

Marsh Posté le 30-01-2004 à 16:52:09   

Reply

Marsh Posté le 30-01-2004 à 17:01:40    

Pourquoi pas récursif ? C'est marrant le récursif :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-01-2004 à 17:49:22    

bah oui, mais imagine le cas ou on dois lister un rep comprenant 100 sous-rep qui comprennent chacun 100 sous-rep sur 5 niveaux.Le recursif ca deviens dans ce cas la un peu violent :)
 
il doit bien y avoir une methode `plus jolie' :D


Message édité par _oxyd_ le 30-01-2004 à 17:49:53
Reply

Marsh Posté le 30-01-2004 à 18:02:07    

bah tes 100 sous-rep seront pas mis sur la pile vu qu'ils sont au même niveau :p
Et vu la limite à 260 caractères d'un chemin, je ne pense pas que ça pose problème


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-01-2004 à 18:09:58    

je vais essayer avec alors :)
 
mais par simple curiosité, y a pas une autre facon avec une complexité un peu moins haute.
merci ;)

Reply

Marsh Posté le 30-01-2004 à 18:27:45    

Je l'ai uniquement fait par récurrence, mais peut-être pourrais-tu utiliser une pile où tu mets les répertoires que tu trouves pendant le listing d'un répertoire X. Et quand tu as finis ce listing, tu chopes le dernier répertoire dans la pile ( pourquoi le dernier ? parce que je pense que sinon tu auras une pile énorme si tu ne t'occupes pas d'une branche à fond) et tu refais la même chose

Reply

Marsh Posté le 30-01-2004 à 19:09:47    

je pense que c'est une bonne solution.
d'ailleurs c'est bien ce que fais delphi lors d'un appel recursif, il empile automatiquement.
le faire `manuellement' peu etre sympa, je vais essayer :D
 
merci a vous


Message édité par _oxyd_ le 30-01-2004 à 19:10:19
Reply

Marsh Posté le 30-01-2004 à 19:27:29    

_oxyd_ a écrit :


d'ailleurs c'est bien ce que fais delphi lors d'un appel recursif, il empile automatiquement.


 
C'est le principe de la récursivité, mais c'est pas la même pile.
Pour les fonctions cette pile a une taille limitée.
Alors que si tu mets tes dossiers dans une liste (la pile dont parle Tentacle j'imagine), la seule limite est la taille de la mémoire du PC


Message édité par antp le 30-01-2004 à 19:27:50

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-01-2004 à 20:39:06    

D'ailleurs elle est limitée à combien cette pile en général ? (je suppose que ça ne doit pas être partout pareil)

Reply

Marsh Posté le 30-01-2004 à 20:41:42    

1Mo max par défaut me semble

Reply

Marsh Posté le 30-01-2004 à 20:41:42   

Reply

Marsh Posté le 30-01-2004 à 22:15:35    

si tu ne te soucies pas de l'ordre dans lequel les répertoires vont être listés, il y a moyen de le faire totalement a plat et sans pile avec un truc du genre:
 
i:=0;
repeat
 if FileList[i].IsDir then
 begin
   // ajouter a FileList le contenu du rep FileList[i]
 end;
 Inc(i);
until i=FileList.Count-1;
 
en mettant dans FileList[0] le rep racine


Message édité par gligli le 30-01-2004 à 22:22:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed