listing de fichier et sous-repertoires sans recursif ? [delphi] - Delphi/Pascal - Programmation
Marsh Posté le 30-01-2004 à 17:01:40
Pourquoi pas récursif ? C'est marrant le récursif
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'
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
Et vu la limite à 260 caractères d'un chemin, je ne pense pas que ça pose problème
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
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
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
merci a vous
Marsh Posté le 30-01-2004 à 19:27:29
_oxyd_ a écrit : |
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
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)
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
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