如何用IShellFolder等方法,遍历一个指定目录下的指定类型的文件。
最好能以树控件的形式来显示出来。

解决方案 »

  1.   

    用搜索引擎找http://www.powerba.com/develop/delphi/article/20010616003.htm
      

  2.   

    while (FindNext(SearchRec) = 0) dobeginif IsValidDir(SearchRec) then增加 SearchRec.Name;end;end;FindClose(SearchRec);
      

  3.   

    应该不难,用一个TTreeView再用TSearchRec来找文件夹和文件就可以了。
    现在身必具疲,不想写代码了!
      

  4.   

    是这样子的。前面的问题我已经基本解决了。现在我要继续这样的功能。
    假如我要遍历C:\WINNT目录下面所有的TXT文件。并生成树结构。所有的TXT文件就是树结构的叶,叶的上一层就是包括它的目录(依此循环)。 如果某一目录没有TXT文件,在生成的树结构中就不用包含该目录。
    这应该是要用到回溯的思想来做。 不知那位大哥有类似的源代码,就请给我一份。这样我就不用自已写的(自已写还是比较麻烦的)。
      

  5.   

    procedure searchpath(path:string; extname:string; var fileresult: Tstrings);
    var
        searchrec:TSearchRec;
        ext:string;
    begin
        if path[length(path)]<>'\' then
            path := path + '\';
        if FindFirst(path+'*.*', faAnyFile, SearchRec)<>0 then exit;
        if (searchrec.Attr and faDirectory) <> 0 then
          begin
            if (searchrec.name<>'.') and (searchrec.name<>'..') then
                searchpath(path+searchrec.name,extname,fileresult);
          end
        else
          begin
            ext := lowercase(extractfileext(searchrec.Name));
            if (ext=extname) then
              begin
                fileresult.add(Copy(searchrec.Name,1,Length(searchrec.Name)-Length(extname)));
              end;
          end;
        while findnext(searchrec)=0 do
          begin
            if (searchrec.Attr and faDirectory) <> 0 then
              begin
                if (searchrec.name<>'.') and (searchrec.name<>'..') then
                    searchpath(path+searchrec.name,extname,fileresult);
              end
            else
              begin
                ext := lowercase(extractfileext(searchrec.Name));
                if (ext=extname) then
                  begin
                    fileresult.add(Copy(searchrec.Name,1,Length(searchrec.Name)-Length(extname)));
                  end;
              end;
          end;
        findclose(searchrec);
    end;