在shelltreeview控件中选中一个文件夹
遍历此文件夹下所有文件以及所有子文件夹下所有文件,以次类推
并获取每个文件的绝对路径进行依次处理操作(非文件夹文件)
或者获取一个处理一个 
该如何处理啊
困扰两天了  还没能解决 
高手帮帮忙

解决方案 »

  1.   

    function TFrmMain.FindFiles(APath: string): Integer;
    var
      SearchRec:TSearchRec;
      FileAttrs: Integer;
      FileDriverDateTime,FileSaveDateTime:String;
      TempFile:String;
    begin
      Result:=0;
      FileAttrs:=faAnyFile;
      If FindFirst(APath+'\*.*',FileAttrs,SearchRec) = 0 then
      begin
        try
          If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
          begin
            If SearchRec.Attr = faDirectory then  //目录继续搜索,递归
               ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name)
            Else begin                             //是文件则进行转发
               try
                 ReSult:=ReSult+1;
                 TempFile:=APath+'\'+SearchRec.Name;
                 Memo1.Lines.Add(TempFile);
                 FileDriverDateTime:=GetFileDriverDateTime(TempFile);
                 FileSaveDateTime:=GetFileSaveDateTime(TempFile);
                 If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then
                    ;
                    DeleteFile(TempFile);
               finally
               end;
            end;
          end;
          While FindNext(SearchRec)=0 do
          begin
            If(SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
            begin
              If SearchRec.Attr = faDirectory then //目录继续搜索,递归
                ReSult:=ReSult+FindFiles(APath+'\'+SearchRec.Name)
            Else begin                             //是文件则进行转发
               try
                 ReSult:=ReSult+1;
                 TempFile:=APath+'\'+SearchRec.Name;
                 Memo1.Lines.Add(TempFile);
                 FileDriverDateTime:=GetFileDriverDateTime(TempFile);
                 FileSaveDateTime:=GetFileSaveDateTime(TempFile);
                 If MoreFilePathTransmitFile(TempFile,'',FileDriverDateTime,FileSaveDateTime) then
                    ;
                    DeleteFile(TempFile);
               finally
               end;
            end;
            end;
          end;
        finally
          FindClose(SearchRec);
        end;
      end;
    end;
      

  2.   

    谢谢 
    解决了
    顺便问下
    怎么可以取得文件的属性  比如文件是系统文件 应用文件 快捷方式 等等  
    就象shelllistview里面显示的文件属性一样
      

  3.   

    var
      lpFileInformation: TbyHandleFileInformation;
      TempSystemTime:SYSTEMTIME;
      HandleFile:THandle;
    begin
      {得到文件的创建时间,表示转储到微机的时间,返回值就是月(两位)日(两位)}
        try
          HandleFile:=FileOpen(TempFile,GENERIC_READ);
          GetFileInformationByHandle(HandleFile,lpFileInformation);
          FileTimeToSystemTime(lpFileInformation.ftLastWriteTime,TempSystemTime);
          ReSult:=FormatFloat('00',TempSystemTime.wMonth)+FormatFloat('00',TempSystemTime.wDay);
          FileClose(HandleFile);
        Except
          ReSult:=Copy(FormatDateTime('yy-mm-dd',now),4,2)+Copy(FormatDateTime('yy-mm-dd',now),7,2);
        end;
    end;
      

  4.   

    GetFileInformationByHandle,这个是得到文件的日期,得到文件的属性那个函数我也忘了,可以查一下API帮助即可,方法跟上面类似,只是换个函数即可.