查找速度要快,类似于AVA FIND。谢谢!

解决方案 »

  1.   

    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;