{Liste (avec ou sans chemin complet) les fichiers d'un répertoire filtrés par leur extension, ou tous les fichiers si aucune extension passée à la procedure. SortFlag = 0 => Liste triée par ordre alphabétique SortFlag = 1 => Liste triée par date de modification SortFlag = 2 => Liste triée par date de création} PROCEDURE FindFiles(Path: String; var ExtList, FilesList: TStringList; Const SortFlag : Integer = 0; Const FullPathName : Boolean = false); VAR FileInfo : TSearchRec; i : Integer; S : string; DateFormat : string; function IsWanted(FileName : String): Boolean; var i : Integer; begin result := false; if (FileName='.') or (FileName='..') then exit; if ExtList.Count=0 then begin result := true; Exit; end; for i := 0 to ExtList.Count-1 do begin if AnsiUpperCase(ExtractFileExt(FileName))=AnsiUpperCase(ExtList[i]) then begin result := true; Break; end; end; end; function FileTimeToString(FileTime : TFileTime): String; var SysTime : TSystemTime; LocalTime : TFileTime; begin result := '-------------------'; if FileTimeToLocalFileTime( FileTime, LocalTime ) then begin if FileTimeToSystemTime( LocalTime, SysTime ) then begin result := DateTimeToStr(SystemTimeToDateTime(SysTime)); end; end; end; BEGIN Path := IncludeTrailingPathDelimiter(Path); if not DirectoryExists(Path) then Exit; DateFormat := ShortDateFormat; ShortDateFormat := 'yyyy/MM/dd'; if FindFirst(Path+'*', faAnyFile, FileInfo)=0 then begin repeat if IsWanted(FileInfo.Name) then case SortFlag of 0 : begin if FullPathName then FilesList.Add(Path + FileInfo.Name) else FilesList.Add(FileInfo.Name); end; 1 : begin if FullPathName then FilesList.Add(DateTimeToStr(FileDateToDateTime(FileInfo.Time)) + Path + FileInfo.Name) else FilesList.Add(DateTimeToStr(FileDateToDateTime(FileInfo.Time)) + FileInfo.Name); end; 2 : begin if FullPathName then FilesList.Add(FileTimeToString(FileInfo.FindData.ftCreationTime) + Path + FileInfo.Name) else FilesList.Add(FileTimeToString(FileInfo.FindData.ftCreationTime) + FileInfo.Name); end; end; Until FindNext(FileInfo)<>0; end; ShortDateFormat := DateFormat;//On rétablit le ShortDateFormat. if SortFlag <> 0 then begin FilesList.Sort; for i := 0 to FilesList.Count-1 do begin S := FilesList[i]; Delete(S,1,19);//On élimine les dates. FilesList[i] := S; end; end; FindClose(FileInfo); END; {Exemple 1 Liste les fichiers *.txt et *.rtf triés par ordre de création avec leur chemin complet : var ExtList : TStringList; FilesList : TStringList; ... ExtList := TStringList.Create; FilesList := TStringList.Create; try ExtList.Add('.txt'); ExtList.Add('.rtf'); FindFiles(Edit1.Text, ExtList, FilesList, 2, true); ListBox1.Items.Assign(FilesList); finally FilesList.Free; ExtList.Free ; end;} {Exemple 2 Liste tous les fichiers triés par ordre alphabétique : var ExtList : TStringList; FilesList : TStringList; ... ExtList := TStringList.Create; FilesList := TStringList.Create; try FindFiles(Edit1.Text, ExtList, FilesList); ListBox1.Items.Assign(FilesList); finally FilesList.Free; ExtList.Free ; end; }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.