cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 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és110Date d'inscriptionjeudi 7 octobre 2004StatutMembreDernière intervention19 février 20091 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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és110Date d'inscriptionjeudi 7 octobre 2004StatutMembreDernière intervention19 février 20091 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és1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 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és110Date d'inscriptionjeudi 7 octobre 2004StatutMembreDernière intervention19 février 20091 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és4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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és2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 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 :)
10 nov. 2004 à 17:27
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.
30 oct. 2004 à 08:37
23 oct. 2004 à 14:04
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 (!...).
22 oct. 2004 à 15:33
19 oct. 2004 à 21:03
19 oct. 2004 à 10:07
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.
18 oct. 2004 à 23:13
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ù...
18 oct. 2004 à 22:33
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 :)