function SearchALLFile(mainpath:string;var foundresult:TStrings;Flag:integer):Boolean;
var
i,site:integer;
tempstr:string;
Found:Boolean;
subdir1:TStrings;
searchRec:TsearchRec;
begin
found:=false;
subdir1:=TStringList.Create;//字符串列表必须动态生成
//找出所有下级子目录。
if (FindFirst(mainpath+'\*.*', faAnyFile, SearchRec)=0) then
begin//faDirectory
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
case Flag of
0:begin
if SearchRec.Attr=faDirectory then
begin
foundresult.Add(mainpath+'\'+SearchRec.Name+'\');
subdir1.Add(SearchRec.Name);
end;
end;
1:begin
if SearchRec.Attr=faDirectory then subdir1.Add(SearchRec.Name)
else foundresult.Add(mainpath+'\'+SearchRec.Name);
end;
2:begin
if SearchRec.Attr=faDirectory then
begin
subdir1.Add(SearchRec.Name);
foundresult.Add(mainpath+'\'+SearchRec.Name+'\');
end
else
foundresult.Add(mainpath+'\'+SearchRec.Name);
end;
end;
end;
while (FindNext(SearchRec) = 0) do
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
case Flag of
0:begin
if SearchRec.Attr=faDirectory then
begin
foundresult.Add(mainpath+'\'+SearchRec.Name+'\');
subdir1.Add(SearchRec.Name);
end;
end;
1:begin
if SearchRec.Attr=faDirectory then subdir1.Add(SearchRec.Name)
else foundresult.Add(mainpath+'\'+SearchRec.Name);
end;
2:begin
if SearchRec.Attr=faDirectory then
begin
subdir1.Add(SearchRec.Name);
foundresult.Add(mainpath+'\'+SearchRec.Name+'\');
end
else
foundresult.Add(mainpath+'\'+SearchRec.Name);
end;
end;
end;
end;
end;
SysUtils.FindClose(SearchRec);
//这是递归部分,查找各子目录。
for i:=0 to subdir1.Count-1 do
found:=SearchAllfile(mainpath+'\'+subdir1.Strings[i],foundresult,Flag) or found;
//资源释放并返回结果。
subdir1.Free;
result:=found;
end;