//直接放在 implementation下//测试是不是目录 function IsValidDir(SearchRec: TSearchRec): integer; begin if (SearchRec.Attr <> 16) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=0 else if (SearchRec.Attr = 16) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=1 else Result:=2; end; //搜索指定目录下的所有rtf文件 //参数意义: // MainPath 指定的搜索路径 FileName 文件名 FoundResult 搜索返回列表 Num 找到的文件数 procedure SearchFile(MainPath, FileName: string;FoundResult: TStrings; var Num: integer); var i:integer; SubDir:TStrings; SearchRec:TsearchRec; begin if Trim(FileName)<>'' then begin if (FindFirst(mainpath+Filename, faAnyFile, SearchRec)=0) then Begin repeat Application.ProcessMessages; if IsValidDir(SearchRec)=0 then begin Inc(Num); foundresult.Add(MainPath+SearchRec.Name) end; application.ProcessMessages ; until (FindNext(SearchRec) <> 0); end; FindClose(SearchRec); //这是递归部分,查找各子目录。 SubDir:=TStringList.Create;//字符串列表必须动态生成 if (FindFirst(MainPath+'*.*', faDirectory, SearchRec)=0) then begin repeat if IsValidDir(SearchRec)=1 then SubDir.Add(SearchRec.Name); Application.ProcessMessages ; until (FindNext(SearchRec) <> 0); end; FindClose(SearchRec); for i:=0 to SubDir.Count-1 do Searchfile(MainPath+SubDir.Strings[i]+'\',Filename,foundresult,Num); //资源释放并返回结果。 SubDir.Free; end; end; //调用 //调用函数查找指定目录下的所有rtf文件,并存放到slFileList对象中,数目存放在intFileCount中。 SearchFile(sPath,'*.rtf',slFileList,intFileCount);
function IsValidDir(SearchRec: TSearchRec): integer;
begin
if (SearchRec.Attr <> 16) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=0
else
if (SearchRec.Attr = 16) and (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then Result:=1
else Result:=2;
end;
//搜索指定目录下的所有rtf文件
//参数意义:
// MainPath 指定的搜索路径 FileName 文件名 FoundResult 搜索返回列表 Num 找到的文件数
procedure SearchFile(MainPath, FileName: string;FoundResult: TStrings; var Num: integer);
var
i:integer;
SubDir:TStrings;
SearchRec:TsearchRec;
begin
if Trim(FileName)<>'' then
begin
if (FindFirst(mainpath+Filename, faAnyFile, SearchRec)=0) then
Begin
repeat
Application.ProcessMessages;
if IsValidDir(SearchRec)=0 then
begin Inc(Num); foundresult.Add(MainPath+SearchRec.Name) end;
application.ProcessMessages ;
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
//这是递归部分,查找各子目录。
SubDir:=TStringList.Create;//字符串列表必须动态生成
if (FindFirst(MainPath+'*.*', faDirectory, SearchRec)=0) then
begin
repeat
if IsValidDir(SearchRec)=1 then SubDir.Add(SearchRec.Name);
Application.ProcessMessages ;
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
for i:=0 to SubDir.Count-1 do
Searchfile(MainPath+SubDir.Strings[i]+'\',Filename,foundresult,Num);
//资源释放并返回结果。
SubDir.Free;
end;
end;
//调用
//调用函数查找指定目录下的所有rtf文件,并存放到slFileList对象中,数目存放在intFileCount中。
SearchFile(sPath,'*.rtf',slFileList,intFileCount);