
代码如下:
implementation
{$R *.dfm}
var
estr:string;
procedure TForm1.N10Click(Sender: TObject);
//搜索文件 FindFirst; FindNext; FindClose
var
sr: TSearchRec; //定义 TSearchRec 结构变量
Attr: Integer; //文件属性
begin
estr := Edit1.Text;
Attr := faAnyFile; //文件属性值faAnyFile表示是所有文件
if FindFirst(estr,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息, 返回0表示找到第一个
repeat //如果有第一个就继续找
Memo1.Lines.Add(sr.Name); //用Memo1记下结果
until(FindNext(sr)<>0); //因为sr已经有了搜索信息, FindNext只要这一个参数, 返回0表示找到
FindClose(sr); //需要结束搜索, 搜索是内含句柄的
//更多注释:
//TSearchRec 结构是内涵文件大小、名称、属性与时间等信息
//TSearchRec 中的属性是一个整数值, 可能的值有:
//faReadOnly 1 只读文件
//faHidden 2 隐藏文件
//faSysFile 4 系统文件
//faVolumeID 8 卷标文件
//faDirectory 16 目录文件
//faArchive 32 归档文件
//faSymLink 64 链接文件
//faAnyFile 63 任意文件
//s 的值也可以使用?通配符,好像只支持7个?, 如果没有条件就是*, 譬如: C:\*
//实际使用中还应该在 repeat 中提些条件, 譬如判断如果是文件夹就递归搜索等等
end;
下面进行函数分析:
function FindFirst(const Path: string; //包含路径和通配符的字符串,如f:\test\*.*
Attr: Integer; //文件属性
var F: TSearchRec //一个结构(或叫记录)
): Integer; //返回值,成功返回0 ,失败返回-1
浙公网安备 33010602011771号