|
<p><font face="Verdana">unit Unit1;<br/>interface<br/>uses<br/> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,<br/> StdCtrls, FileCtrl;<br/>type<br/> TForm1 = class(TForm)<br/> Button1: TButton;<br/> ListBox1: TListBox;<br/> procedure Button1Click(Sender: TObject);<br/> private<br/> { Private declarations }<br/> public<br/> { Public declarations }<br/> end;<br/>var<br/> Form1: TForm1;<br/>implementation<br/>{$R *.DFM}<br/>{---------------------------------------<br/> 文件查找函数 SearchFile<br/> 参数说明:<br/> sFileName: 要查找的文件名称<br/> sRootDir: 指定在哪个目录中查找<br/> bFileOnly: 是否只查找文件<br/> bRecurse: 是否查找子目录<br/> 返回值:<br/> FileList: 查找结果列表<br/>----------------------------------------}<br/>//正式函数开始<br/>function SearchFile(sFileName, sRootDir: string;<br/> bFileOnly, bRecurse: boolean): TStringList;<br/> //内嵌文件查找递归过程<br/> procedure DoSearchFile(sFileName, sRootDir: string;<br/> bFileOnly, bRecurse: boolean;<br/> var FileList: TStringList);<br/> var<br/> Found: integer;<br/> SearchRec: TSearchRec;<br/> begin<br/> //开始查找<br/> Found := FindFirst(sRootDir + '\*.*', faAnyFile, SearchRec);<br/> while Found = 0 do<br/> begin<br/> //遇到子目录时确定是否查找子目录和是否将符合条件的子目录加入查找结果<br/> if (SearchRec.Attr = faDirectory) and (SearchRec.Name <> '.') and<br/> (SearchRec.Name <> '..') then<br/> begin<br/> if (AnsiCompareText(sFileName, SearchRec.Name) = 0) and not bFileOnly then<br/> FileList.Add(sRootDir + '\' + SearchRec.Name);<br/> if bRecurse then<br/> DoSearchFile(sFileName, sRootDir + '\' + SearchRec.Name, bFileOnly, bRecurse, FileList);<br/> end<br/> //找到符合条件的文件时加入查找结果<br/> else if AnsiCompareText(sFileName, SearchRec.Name) = 0 then<br/> FileList.Add(sRootDir + '\' + SearchRec.Name);<br/> Found := FindNext(SearchRec);<br/> end;<br/> FindClose(SearchRec);<br/> end;<br/>var<br/> FileList: TStringList;<br/>begin<br/> FileList := TStringList.Create;<br/> FileList.Clear;<br/> DoSearchFile(sFileName, sRootDir, bFileOnly, bRecurse, FileList);<br/> Result := FileList;<br/>end;</font></p>
<p><font face="Verdana">// 调用:<br/>procedure TForm1.Button1Click(Sender: TObject);<br/>{按Button时进行查找,结果显示到ListBox中}<br/>begin<br/> ListBox1.Items.Assign(SearchFile('Project1.dpr', 'd:', True, True));<br/>end;<br/>end.</font></p> |
|