Var  
  SR : TSearchRec;
  iFound    : Integer;
  Ext,sPath      : String;
  
Begin
  spath := 'c:\12121\';
  spath:=spath+'*.exe';
  iFound := FindFirst( sPath, faAnyFile , SR );
  Try
    While Found = 0 Do
    Begin
      //。
      iFound := FindNext( SearchRec );
    End;
  Finally
    FindClose( SearchRec );
  End;
End;

解决方案 »

  1.   

    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; 
      

  2.   

    procedure TFrmtest.FileListBox1Change(Sender: TObject);
    var i,leng :integer;
        fliter: string;
         count:integer;
    begin
     count:=filelistbox1.Items.Count-1;
      for i:=count downto 0 do
         begin
           leng:=length(filelistbox1.Items[i]);
           fliter:=copy(filelistbox1.Items[i],leng-3,4);
           if fliter<>'.XXX' then // XXX--需要的文件的后缀名
              filelistbox1.Items.Delete(i);
         end;
    end;