delphi 文件搜索,遍历所有子目录

function ListFiles(path: string): TStringList;
var
  SearchRec: TSearchRec;
  found: integer;
begin
  result := TStringList.Create;
  found := FindFirst(path + '\' + '*.*', faAnyFile, SearchRec);
  if not DirectoryExists(path) then
  begin
    Result.Clear;
    exit;
  end;
  while found = 0 do
  begin
    if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') and (SearchRec.Attr <> faDirectory) then
    begin
      if ExtractFileExt(SearchRec.Name) = '.dfm' then
        result.Add(path + '\' + SearchRec.Name);
    end
    else if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
    begin
      Result.AddStrings(ListFiles(path + '\' + SearchRec.Name));
    end;
    found := FindNext(SearchRec);
  end;
  FindClose(SearchRec);
end;

http://blog.csdn.net/y281252548/article/details/51659208