procedure GetAllFiles(MainPath: String);
var
  nI: Integer;
  SearchRec: TSearchRec;
  sFileName: String;
  sMainpath: String;
begin  if MainPath[Length(MainPath)]='\' then  sMainpath:=MainPath
  else sMainpath:=MainPath+'\';
  FindFirst(sMainPath+'*.*',faAnyFile,SearchRec);
  if SearchRec.Name<>'' then
  begin
    sFileName:=UpperCase(SearchRec.Name);
    if (Pos('.ZIP',sFileName)=Length(sFileName)-3) then//你可以换成其他的如'.mp3'
      AllFiles.Add(sMainPath+SearchRec.Name);
    if (SearchRec.Attr and faDirectory)=1 then
      if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
        GetAllFiles(sMainPath+SearchRec.Name);
    while  (FindNext(SearchRec)=0) do
    begin
      sFileName:=UpperCase(SearchRec.Name);
      if (Pos('.ZIP',sFileName)=Length(sFileName)-3) then
        listbox1.Add(sMainPath+SearchRec.Name);
      if (SearchRec.Attr and faDirectory)=faDirectory then
        if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
          GetAllFiles(sMainPath+SearchRec.Name);
    end;
  end;end;

解决方案 »

  1.   

    要时间的话可以通过
    SearchRec.time就可以获得
      

  2.   

    var
      f: TSearchRec;
      result:boolean;
    begin
      result := findfirst(path+'*.mp3',faAnyFile,f) = 0;
        if Result then
          begin
            listbox1.Items.Add(f.name); 
            repeat
              result := findnext(f) = 0;
              if result then listbox1.Items.Add(f.name);
              else findclose(f);
            until (not result);
          end;
    end;
      

  3.   

    findfirst,findnext
    要用递归搜索
    搜索一下以来的帖子,有很多这类问题的
      

  4.   

    >>信息如文件的大小,文件名查找文件用上面的方法,至于控件,可以用TListView!可以设置多个列,如同资源管理器一样,设置ListView的style:=vsReport即可
      

  5.   

    用findfirst,findnext这两个函数,但大家的做法只能搜索直接目录,没法搜子目录。
    你可把程序改一下,写成递归调用,就可连子目录的信息都得到。