Le 28 nov. 07 à 20:09 soir, Arnaud Nicolet a écrit:
Une autre méthode consiste à utiliser une boucle et des variables
de type tableau (on ajoute le dernier dossier trouvé dans une
variable du genre MyFoldersToTreat() As FolderItem). Je suis en
train de rechercher dans mon code. Quand j'aurai trouvé, je vous
ferai une nouvelle réponse.
Voilà, Powel, je n'ai pas trouvé le code dans mes fichiers mais ce
n'est pas trop dure à faire.
En fait, il faut recopier la récursivité sans appeler d'autres
méthodes (la mémoire allouée aux appels des méthodes sature beaucoup
plus vite que la mémoire de l'application, même si je n'utilise peut-
être pas les termes adéquats).
Une sorte d'exemple (pour le plaisir de coder):
dim f As FolderItem
dim g As FolderItem
dim Dossiers() As FolderItem 'Liste des dossiers à traiter
dim i() As Integer 'Chaque valeur où on en est dans chaque dossier
dim j As integer 'Pour ne pas utiliser "UBound" à chaque fois, on
utilise une variable
dim k As integer
dim s As String
f=File
Dossiers.Append f
i.Append 1
j=0
do
if UBound(Dossiers)=-1 then exit
f=Dossiers(j)
k=i(j)
if k<=f.count then
g=f.trueItem(k)
s=g.AbsolutePath
if g.Directory then
//c'est un dossier. On l'ajoute à la liste et le code va tout
seul s'occuper de celui-ci (donc on descend le plus possible)
Dossiers.Append g
i.append 1 'On commencera au 1er élément
j=j+1
else
g.delete
if g.Exists and i>-1 then
i(j)=i(j)+1
end if
end if
else 'k>f.count, on dépasse le nombre de fichiers (ce n'est pas
une boucle "for-next"!)
Dossiers.remove j
i.remove j
f.delete
j=j-1
if f.Exists and i>-1 then
i(j)=i(j)+1
end if
end if
loop