{ Dir为目录名,最后必须有'\',如'c:\temp\'; Ext为扩展名,前面必须有'.',如'.txt'; 查找到的文件名称存入StrLst中。} procedure GetFilesWithSameExt(Dir, Ext: string; StrLst: TStrings); var SearchRec: TSearchRec; begin // 首先清空输出列表 StrLst.Clear; // 查找指定目录下是否有文件 if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then begin // 依次查找每个文件(夹)是否包含指定的扩展名 while FindNext(SearchRec) = 0 do if Pos(Ext, SearchRec.Name) > 0 then StrLst.Add(SearchRec.Name); // 最后一定要关闭结构,释放资源 FindClose(SearchRec); end; end; 如果要对文件的属性再做过滤,可以查一下TSearchRec的帮助。
添加一个过程如下: 然后 调用FindAllFiles('c:\windows','*.bmp'); :) procedure TForm1.FindAllFiles(Dir,Mask:string); var SRec: TSearchRec; retval: Integer; oldlen: Integer; path:string; begin Path:=Dir; oldlen := Length(Dir); retval := FindFirst( Dir+Mask,faAnyFile,SRec); While retval=0 Do Begin If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then //是文件 begin //相应的处理,用户自己添加 ShowMessage(SRec.Name); end; retval := FindNext(SRec); End; FindClose(SRec);
Ext为扩展名,前面必须有'.',如'.txt';
查找到的文件名称存入StrLst中。}
procedure GetFilesWithSameExt(Dir, Ext: string; StrLst: TStrings);
var
SearchRec: TSearchRec;
begin
// 首先清空输出列表
StrLst.Clear; // 查找指定目录下是否有文件
if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
begin
// 依次查找每个文件(夹)是否包含指定的扩展名
while FindNext(SearchRec) = 0 do
if Pos(Ext, SearchRec.Name) > 0 then
StrLst.Add(SearchRec.Name);
// 最后一定要关闭结构,释放资源
FindClose(SearchRec);
end;
end;
如果要对文件的属性再做过滤,可以查一下TSearchRec的帮助。
然后
调用FindAllFiles('c:\windows','*.bmp');
:)
procedure TForm1.FindAllFiles(Dir,Mask:string);
var
SRec: TSearchRec;
retval: Integer;
oldlen: Integer;
path:string;
begin
Path:=Dir;
oldlen := Length(Dir);
retval := FindFirst( Dir+Mask,faAnyFile,SRec);
While retval=0 Do
Begin
If (SRec.Attr and (faDirectory or faVolumeID)) = 0 Then //是文件
begin
//相应的处理,用户自己添加
ShowMessage(SRec.Name);
end;
retval := FindNext(SRec);
End;
FindClose(SRec);