Recherche recursive a partir d un lecteur

Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005 - 19 nov. 2004 à 11:22
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 19 nov. 2004 à 19:30
Boujour.

Je cherche une fonction de recherche qui puisse chercher tous les fichiers d une certaine extention dans un lecteur designé par
drivecombobox.drive, et qui affiche ces resultats dans un memo ( si possible sous la forme video.avi [c:\video\divx\action\] ).

J' espere que je n' en demande pas trop. :big)

merci

2 réponses

Joleroy Messages postés 106 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 24 octobre 2005
19 nov. 2004 à 18:54
Le probleme n' est pas de chercher la fonction, c de l' adaptée a ce que je veut faire.
Le mieux serait de rendre celle la recursive mais je ne sait pas somment faire.

function FindAllFiles(SDirectory : string; SExtention: String) : TStringList;
var
srSrc : TSearchRec;
begin
// Garantit que le chemin d'accès se termine par un délimiteur.
SDirectory := IncludeTrailingPathDelimiter(SDirectory);
// Cherche la première instance d'un nom de fichier avec un ensemble
// d'attributs précis dans un répertoire spécifié.
if FindFirst(SDirectory + SExtention,faAnyFile,srSrc) = 0 then
begin
repeat
if (srSrc.Name <> '.') and (srSrc.Name <> '..') then
begin
if (srSrc.Attr and faDirectory) <> 0 then
Form3.Memo1.Lines.AddStrings(FindAllFiles(SDirectory, SExtention + srSrc.Name))
else
Form3.Memo1.Lines.Add(sDirectory + srSrc.Name);
end;

Application.ProcessMessages;

until (FindNext(srSrc) <> 0);

FindClose(srSrc);
end;
end;


Puis je l' appelle comme ca:

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
Memo1.Clear;
Findallfiles('C:\ , '*.avi');
end;


C' est le code que j utilise en ce moment. Mais ses 2 defaut sont de ne pas etre recursif, et le parametre dossier (ici c:\) est au format string alors que Drivecombobox1.drive est un char ( au passage si quelqun peut me dire a quoi ca correspond).
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
19 nov. 2004 à 19:30
hello,

utilise mon composant TdbpFindFiles (dans mes sources delphifr ou sur mon site web), tu pourras selectionner (recursivement, ds les sous-dosiers ou non) les *.avi et les recupérer.

si tu as besoin d'aide sur l'utilisation/le comportement du composant : poses tes questions ici.

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
Rejoignez-nous