如何统计某个目录下的制定类型的文件数量

解决方案 »

  1.   

    用FindFirst和FindNext, FindClose函数
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);var
      sr: TSearchRec;
      FileAttrs: Integer;
    begin
      StringGrid1.RowCount := 1;
      if CheckBox1.Checked then
        FileAttrs := faReadOnly
      else
        FileAttrs := 0;
      if CheckBox2.Checked then
        FileAttrs := FileAttrs + faHidden;
      if CheckBox3.Checked then
        FileAttrs := FileAttrs + faSysFile;
      if CheckBox4.Checked then
        FileAttrs := FileAttrs + faVolumeID;
      if CheckBox5.Checked then    FileAttrs := FileAttrs + faDirectory;
      if CheckBox6.Checked then
        FileAttrs := FileAttrs + faArchive;
      if CheckBox7.Checked then    FileAttrs := FileAttrs + faAnyFile;  with StringGrid1 do
      begin
        RowCount := 0;    if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then    begin
          repeat
            if (sr.Attr and FileAttrs) = sr.Attr then
            begin
            RowCount := RowCount + 1;
            Cells[1,RowCount-1] := sr.Name;
            Cells[2,RowCount-1] := IntToStr(sr.Size);
            end;
          until FindNext(sr) <> 0;
          FindClose(sr);
        end;
      end;
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      FileSeacher('c:\*.exe');
    end;procedure TForm1.FileSeacher(FindStr: string);
    var
      Sr: TSearchrec;
      FileAttrs: Integer;
      i : integer;
    begin
      i := 0;
      FileAttrs := faanyfile;  if FindFirst(FindStr,FileAttrs,Sr) = 0 then
      begin
            repeat
            if (Sr.Attr and FileAttrs) = Sr.Attr then
            begin
               i := i+1;
            end;
            until findnext(Sr) <>0 ;
            findclose(Sr);
      end;
      showmessage(inttostr(i));end;
    其中FileAttrs 可以是
    faSysFile System files
    faVolumeID Volume ID files
    faDirectory Directory files
    faArchive Archive files
    faAnyFile   Any file