返回值: FileList: 查找结果列表 ----------------------------------------} function SearchFile(sFileName, sRootDir: string; bFileOnly, bRecurse: boolean): TStringList; //内嵌文件查找递归过程 procedure DoSearchFile(sFileName, sRootDir: string; bFileOnly, bRecurse: boolean; var FileList: TStringList); var Found: integer; SearchRec: TSearchRec; begin //开始查找 Found := FindFirst(sRootDir + '\*.*', faAnyFile, SearchRec); while Found = 0 do begin //遇到子目录时确定是否查找子目录和是否将符合条件的子目录加入查找结果 if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then begin if (AnsiCompareText(sFileName, SearchRec.Name) = 0) and not bFileOnly then FileList.Add(sRootDir + '\' + SearchRec.Name); if bRecurse then DoSearchFile(sFileName, sRootDir + '\' + SearchRec.Name, bFileOnly, bRecurse, FileList); end //找到符合条件的文件时加入查找结果 else if AnsiCompareText(sFileName, SearchRec.Name) = 0 then FileList.Add(sRootDir + '\' + SearchRec.Name); Found := FindNext(SearchRec); end; FindClose(SearchRec); end; var FileList: TStringList; begin FileList := TStringList.Create; FileList.Clear; DoSearchFile(sFileName, sRootDir, bFileOnly, bRecurse, FileList); Result := FileList; end;
procedure TForm1.Button1Click(Sender: TObject); {按Button时进行查找,结果显示到ListBox中} begin ListBox1.Items.Assign(SearchFile('Project1.dpr', 'd:\', True, True)); end;