John Dogget
Messages postés384Date d'inscriptionvendredi 18 juin 2004StatutMembreDernière intervention 7 mai 2009
-
30 mars 2007 à 16:12
John Dogget
Messages postés384Date d'inscriptionvendredi 18 juin 2004StatutMembreDernière intervention 7 mai 2009
-
30 mars 2007 à 17:45
Bonjour à tous.
Je souhaiterais lister tous les fichiers images (bmp, jpg, ico etc) contenue dans un dossier.
Pour ça j'utilise FindFirst comme ceci :
var
IdentifiantFichier:TSearchRec;
...
if FindFirst(Dossier+'*.*',faAnyfile,IdentifiantFichier)=0 then
...
Ca marche très bien mais pour une seule extention de fichier.
En fait, je voudrais remplacer le '*.*' de mon code par un filtre qui me permette de voir tous les fichiers images en une fois, l'interet etant de ne lancer un FindFirst qu'une fois.
Loulibier
Messages postés309Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention24 septembre 20082 30 mars 2007 à 17:06
bonjour John Dogget,
Si j'ai bien compris ton priblème, j'utiliserais ta façon de faire.
Je chercherais tous les fichiers du répertoire et les fichiers au moment de les ajouter à ta liste.
exemple :
var
IdentifiantFichier:TSearchRec;
slListFiles : TStringList;
...
slListFiles := TStringList.Create;
if FindFirst(Dossier + '*.*', faAnyfile, IdentifiantFichier)=0 then
begin
repeat
if (IdentifiantFichier.Name <> '.') and (IdentifiantFichier.Name <> '..') and ((IdentifiantFichier.Attr and faDirectory) = 0) then
begin
if SameText(ExtractFileExt(IdentifiantFichier.Name), '.jpg') or
SameText(ExtractFileExt(IdentifiantFichier.Name), '.bmp') or
SameText(ExtractFileExt(IdentifiantFichier.Name), '.ico') then
slListFiles.Add(IdentifiantFichier.Name);
end;
Application.ProcessMessages;
until (FindNext(IdentifiantFichier) <> 0);
end;
slListFiles.Free;
Bonne Prog, Olivier
PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 30 mars 2007 à 17:03
Bonsoir,
Deux possibilités, mais certainement pas celle que tu attendais car on ne peut pas spécifier un masque multiple dans les paramètres.
1 - Faire N boucles avec une extension à la fois (pas terrible, je sais )
2 - Faire une seule boucle, il faut utiliser un "*.*", comme tu as fais, et implémenter ton propre test :
if ( ExtractFileExt(SearchRec.Name) = Uppercase('bmp') ) then
begin
// ...
end else
if ( ExtractFileExt(SearchRec.Name) = Uppercase('jpg') ) then
begin
// ...
end ;
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein