如何历遍查找指定的文件?(100分)

  • 主题发起人 主题发起人 Hamas
  • 开始时间 开始时间
H

Hamas

Unregistered / Unconfirmed
GUEST, unregistred user!
可以在指定的盘符或目录当中查找指定的文件?

好象要用什么递归法?

感谢各位。
 
使用FindFirst, FindNext, FindClose函数来实现,可以参考Delphi帮助中的例子:
procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
if CheckBox1.Checked then
FileAttrs := faReadOnly
else
FileAttrs := 0;
if CheckBox2.Checked then
FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then
FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then
FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then

FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then
FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then

FileAttrs := FileAttrs + faAnyFile;

with StringGrid1 do
begin
RowCount := 0;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

begin
repeat
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
end;
 
取得“我的文档”下所有文件的例子。
procedure TForm1.Button1Click(Sender: TObject);
var
sr: TSearchRec;
FileAttrs: Integer;
begin
FileAttrs:=0;
listbox1.Clear;
FileAttrs:=FileAttrs + faAnyFile;
if FindFirst('C:/Documents and Settings/Administrator/My Documents/*.*', FileAttrs, sr) = 0 then
begin
repeat
if (sr.Attr and FileAttrs) = sr.Attr then
begin
listbox1.Items.Add(sr.Name);
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
如果希望得到所有的文本文件(*.txt),那么FindFirst改为:
FindFirst('C:/Documents and Settings/Administrator/My Documents/*.txt', FileAttrs, sr)
 
看看这个帖子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2186485
 
接受答案了.
 
后退
顶部