如何用Delphi编写,不能用标准文件搜索对话框。

解决方案 »

  1.   

    // 从搜索记录中判断是否是子目录
    function IsValidDir(SearchRec:TSearchRec):Boolean;
    begin
    if (SearchRec.Attr=16) and
    (SearchRec.Name<>'.') and
    (SearchRec.Name<>'..') then
    Result:=True
    else
    Result:=False;
    end;//  子目录级的文件查询--查询主体函数
    function SearchFile(mainpath:string; filename:string;var foundresult:TStrings):Boolean;
    var
      i:integer;
      Found:Boolean;
      subdir1:TStrings;
      searchRec:TsearchRec;
    begin
      found:=false;
      if Trim(filename)<>'' then
      begin
        subdir1:=TStringList.Create;//字符串列表必须动态生成
        //找出所有下级子目录。
        if (FindFirst(mainpath+'*.*', faDirectory, SearchRec)=0) then
        begin
          if IsValidDir(SearchRec) then
            subdir1.Add(SearchRec.Name);
          while (FindNext(SearchRec) = 0) do
          begin
            if IsValidDir(SearchRec) then
              subdir1.Add(SearchRec.Name);
          end;
        end;
        FindClose(SearchRec);
        //查找当前目录。
        if FileExists(mainpath+filename) then
        begin
          found:=true;
          foundresult.Add(mainpath+filename);
        end;
        //这是递归部分,查找各子目录。
        for i:=0 to subdir1.Count-1 do
          found:=Searchfile(mainpath+subdir1.Strings[i]+ '\',Filename,foundresult)or found;
        //资源释放并返回结果
        subdir1.Free;
      end;
      result:=found;
    end;使用方法:
    var
      strlist1:TStringList;
    begin
      strlist1:=TStringList.create;
       SearchFile('c:', 'aa.txt',strlist1);
      ....
    end;`