搜索文件夹的子目录

procedure FindFile(const filespec: TFileName;extname:String;list:TStringList;sub:boolean);
  procedure RFindFile(const folder: TFileName;extname:String);
  var
    SearchRec: TSearchRec;
  begin
    if FindFirst(ConCat(folder,extname), faAnyFile , SearchRec)=0 then begin
      try
        repeat
          if (SearchRec.Attr and faDirectory = 0) or
             (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
            if fileexists(folder + SearchRec.Name) then
            list.Add(folder + SearchRec.Name);
        until FindNext(SearchRec) <> 0;
      except
        FindClose(SearchRec);
        raise;
      end;
      FindClose(SearchRec);
    end;
  if sub then
   begin
    if FindFirst(ConCat(folder,extname), faAnyFile
        Or faDirectory, SearchRec) = 0 then
    begin
      try
        repeat
          if ((SearchRec.Attr and faDirectory) <> 0) and
             (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
            RFindFile(folder + SearchRec.Name + '\',extname);
        until FindNext(SearchRec) <> 0;
      except
        FindClose(SearchRec);
        raise;
      end;
      FindClose(SearchRec);
    end;
    end;
  end;

begin
  try
    RFindFile(ExtractFilePath(filespec),extname);
  except
    raise;
  end;
end;

posted @ 2013-01-06 15:50  骑着骆驼逛沙漠  阅读(127)  评论(0编辑  收藏  举报