遍历查找文件夹,有些文件夹的属性-常规-高级中的可以存档文件夹是选上的,结果用findfirst、findnext无法识别此类文件夹,导致无法找不到文件夹。有没办法用程序去掉这属性的。

解决方案 »

  1.   

    这个理论上有API可以操作,要查一查MSDN
      

  2.   

    能不能说得具体点?到msdn中改查什么关键字才能找到那个api
      

  3.   

    1、这个“可以存档文件”应当就是命令attrib中所显示的文件属性A
    (可以修改一下,并用命令 attrib /d /s |more 对照查看)
    在FindFirst中文件属性值(File attribute constants)对应是faArchive2、随便找段代码实测了一下(D7),当使用faAnyFile属性查找时,所有文件都是可以显示的
    不知楼主的测试环境是什么
      

  4.   

    我在findfirst中是用faDirectory来查找的,如果用faAnyFile,查找了所有文件,是不是就降低了效率。
      

  5.   

    try
        Ret:=FindFirst(AParentDir,faDirectory,Dir);
        if   Ret   <>   NO_ERROR   then   exit;
        try
          while   ret=NO_ERROR   do
          begin
            if   (Dir.Attr=faDirectory)   and   (Dir.Name<>'.')
            and (Dir.Name<>'..')  then     
            begin
              inc(i);
            end;
            Ret:=FindNext(Dir);
          end;
        finally
          FindClose(Dir);
        end;
      except  end;
    这是我的一段代码,将faDirectory改成faAnyFile发现还是不行。该怎么更正才好。
      

  6.   

    谢谢tjianliang。我将那段代码改成
    try
        Ret:=FindFirst(AParentDir,faAnyFile,Dir);
        if   Ret   <>   NO_ERROR   then   exit;
        try
          while   ret=NO_ERROR   do
          begin
            if   ((Dir.Attr>15) and (Dir.Attr<49))   and   (Dir.Name<>'.')
            and (Dir.Name<>'..')  then     
            begin
              inc(i);
            end;
            Ret:=FindNext(Dir);
          end;
        finally
          FindClose(Dir);
        end;
      except  end;
    可以将属性设为''可以存档的文件夹''的文件夹找出来,不过这不是找出全部不同属性的文件夹,我只是找出我需要的那部分。其它属性详见
    http://hi.baidu.com/zyw8308/blog/item/c801a28654d6753566096ef1.html