100分求 如何在1个目录种搜索多个文件!

                            
我知道怎么在某个目录里搜索1个指定文件名的文件。但如果要搜索多个文件   应该在哪个地方做改进?   
   
  搜索多个文件的话是不是要建一个TStringList,把所有要查找的文件名都存入这个字符串列表中,再做个循环   for   i:=0   to   StringList.count-1   do,在这个循环中在findfirst,findnext,   我现在的想法就是这样,但不好检验,也不知道对不对,因为搜索还有个效率的问题,我不知道这样的效率怎样,大家可以给点意见吗?  
   
  搜索指定的某个文件的代码如下  
  function   CurrentIsValidDir(SearchRec:TSearchRec):integer;  
  procedure   RecurSearchFile(CurrentDir:string;SearchFileType:string;SearchResult:TStrings;var   Number:integer);  
   
  function   TForm1.CurrentIsValidDir(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;  
   
  Procedure   TForm1.RecurSearchFile(CurrentDir:string;SearchFileType:string;SearchResult:TStrings;var   Number:integer);  
  var  
    i:integer;  
    Subdir:TStringList;  
    SearchRec:TsearchRec;  
  begin  
  //调用FindFirst和FindNext查找符合要求的文件  
    if   (FindFirst(CurrentDir+SearchFileType,   faAnyFile,   SearchRec)=0)   then  
      begin  
        repeat  
          if   CurrentIsValidDir(SearchRec)=0   then  
              begin  
                Inc(Number);  
                Searchresult.Add(CurrentDir+SearchRec.Name);  
              end;  
          application.ProcessMessages   ;  
        until   (FindNext(SearchRec)   <>   0);  
      end;  
    FindClose(SearchRec);  
   
  //查找各子目录。  
    Subdir:=TStringList.Create;  
    if   (FindFirst(CurrentDir+'*.*',   faDirectory,   SearchRec)=0)   then  
      begin  
        repeat  
          if   CurrentIsValidDir(SearchRec)=1   then  
            begin  
              Subdir.Add(SearchRec.Name);  
            end;  
          application.ProcessMessages   ;  
        until   (FindNext(SearchRec)   <>   0);  
      end;  
    FindClose(SearchRec);  
    for   i:=0   to   Subdir.Count-1   do  
      begin  
        RecurSearchfile(CurrentDir+Subdir.Strings[i]+'\',SearchFileType,Searchresult,Number);  
      end;  
   
    Subdir.Free;  
  end;

查看回复

相关问题