CONSTITUTION RÉCURSIVE DE LISTE DE RÉPERTOIRE

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 18 oct. 2004 à 22:33
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 - 10 nov. 2004 à 17:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26941-constitution-recursive-de-liste-de-repertoire

cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
10 nov. 2004 à 17:27
En résumé, on le met ou on le met pas le VAR ??

Dans le code, j'ajouterai encore une ligne: sltRep.Clear juste après la vérification de l'assignation. Ce serait très bien de vider la liste avant de la remplir, non ?

Sinon sous Delphi 3 et 5, si le but de ce code est uniquement de récupérer les dossiers, alors il ne marche pas puisqu'il capte aussi les fichiers. Dans ce cas, il faut vérifier que chaque résultat est un dossier. Un exemple de cette fonction est disponible au code 27371.
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 1
30 oct. 2004 à 08:37
je suis d'accord avec toi ! Quand on fait du code 'neuf' dans un projet OK, mais en maintenance de code on a pas forcement le choix !
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
23 oct. 2004 à 14:04
MHI: merci pour cette précision utile.
Mais, si l'on respecte un principe de base qui veut que c'est celui qui instancies (ou le propriétaire de l'objet) qui est chargé de la destruction, alors on ne devrait jamais rencontrer le problème.
Le passage d'un objet en paramètre Var est pour moi une anomalie d'écriture puisqu'il est d'office transmis par adresse et jamais par valeur (!...).
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 1
22 oct. 2004 à 15:33
Delphiprog, pour info, il ne faut pas faire de free et de create sur un objet qui n'est pas passé en VAR à une fonction, surtout si on renvoie cet objet (car on ne travaille plus sur les même adresse mémoire), dans ce cas il faut absoluement le passé en VAR. Je viens de rencontrer le problème au boulot sur des fuites mémoires.
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
19 oct. 2004 à 21:03
C'est simple... Et pour ceux interessés dans la récurrence dans la base de registre, qu'ils aillent voir le code source N°25662. C'est surpuissant...
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 1
19 oct. 2004 à 10:07
DelphiProg tu as raison en ce qui concerne le var, il s'agit d'un vieux réflexe.

En ce qui concerne l'allocation de la TStringList il est vrai qu'on pourrais tester si la TStringList est alloué. Je vais ajouter cela.
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
18 oct. 2004 à 23:13
C'est un code, propre et rapide je pense.
J'ai une petite question, pourquoi passer le paramètre sltRep en paramètre var ?
Une TStringList est un objet et tu passes donc une référence. Le mot clé Var est ici inutile.

Personnellement j'ajouterais, après le begin, un contrôle avant d'utiliser la liste de chaines :
if sltRep = nil then exit;
Au cas où...
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
18 oct. 2004 à 22:33
hello,
oui c basique mais le code est propre et va servir (chui sur kil existe aussi peut etre ailleurs ici lol)
pour ceux qui cherchent le meme genre de composant mais avec des options (rechch par taille, date, extentions etc) il existe les composants JEDI vcl (pack de compo libres)
et moi meme ai fait un ptit compo ki est de niveau entre cette fonction et les JEDI : TdbpFindFiles (voir mes sources)
voila :)
Rejoignez-nous