Procedure SearchFile(mainpath:string;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;
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;