张志峰的博客

水滴石川,积少成多。

导航

delphi获取目录下所有文件名

Posted on 2016-08-07 13:41  ╰★张志峰★╮  阅读(3992)  评论(0编辑  收藏  举报

 

 

procedure  searchfile(path:string);//注意,path后面要有'\';   
   var   
       SearchRec:TSearchRec;   
       found:integer;   
   begin   
       found:=FindFirst(path+'*.*',faAnyFile,SearchRec);   
       while    found=0    do   
         begin   
             if (SearchRec.Name<>'.')  and (SearchRec.Name<>'..')     
                   and    (SearchRec.Attr<>faDirectory)    then   
                 ListBox1.Add(SearchRec.Name);   
             found:=FindNext(SearchRec);   
         end;   
       FindClose(SearchRec);   
   end;  

//===============================================================

上面一个只获取当前目录下所有文件,如果要获取该目录下的子目录的文件,看下面   
   procedure  SearchFile(path:string);   
   var   
       SearchRec:TSearchRec;   
       found:integer;   
   begin   
       found:=FindFirst(path+'*.*',faAanyFile,SearchRec);   
       while    found=0    do   
         begin   
           if  (SearchRec.Name<>'.')  and  (SearchRec.name<>'..)  and   
                 (SearchRec.Name=faDirectory)    then   
               SearchFile(SearchRec.Name+'\')   
           else   
               LisBox1.Add(SearchRec.Name);   
           found:=FindNext(SearchREc);   
       end;   
       FindClose(SearchRec);   
   end;   
//===================================================================

 

第二个函数的 SearchRec.Name=faDirectory 错了

procedure TForm2.SearchFile(path:string; strList: TStrings);
var
SearchRec:TSearchRec;
found:integer;
begin
found:=FindFirst(path+'*.*', faAnyFile,SearchRec);
while found=0 do
begin
if (SearchRec.Name<>'.') and (SearchRec.name<>'..') and
((SearchRec.Attr and faDirectory) <> 0) then
SearchFile(path + SearchRec.Name + '\', strList)
else
strList.Add(path + SearchRec.Name);
found:=FindNext(SearchREc);
end;
FindClose(SearchRec);
end;