代码如下:unit unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, FileCtrl, Grids, Outline, DirOutln;type
TMainForm = class(TForm)
dcbDrives: TDriveComboBox;
edtFileMask: TEdit;
lblFileMask: TLabel;
btnSearchForFiles: TButton;
lbFiles: TListBox;
dolDirectories: TDirectoryOutline;
procedure btnSearchForFilesClick(Sender: TObject);
procedure dcbDrivesChange(Sender: TObject);
private
FFileName: String;
function GetDirectoryName(Dir: String): String;
procedure FindFiles(APath: String);
end;var
MainForm: TMainForm;implementation{$R *.DFM}function TMainForm.GetDirectoryName(Dir: String): String;begin
if Dir[Length(Dir)]<> '\' then
Result := Dir+'\'
else
Result := Dir;
end;procedure TMainForm.FindFiles(APath: String);
var
FSearchRec,
DSearchRec: TSearchRec;
FindResult: integer; function IsDirNotation(ADirName: String): Boolean;
begin
Result := (ADirName = '.') or (ADirName = '..'); ???这句代码有什么用?
end;begin
APath := GetDirectoryName(APath); // Obtain a valid directory name FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec); ???在findfirst函数中就写 一个faanyfile不就行了 try
while FindResult = 0 do
begin
lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name));
FindResult := FindNext(FSearchRec);
end;
FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec); ???这里的fadirectory做 什么用啊 while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then ???这句代码做什么用?
FindFiles(APath+DSearchRec.Name); // Recursion here
FindResult := FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;procedure TMainForm.btnSearchForFilesClick(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
lbFiles.Items.Clear;
FFileName := edtFileMask.Text;
FindFiles(dolDirectories.Directory);
finally
Screen.Cursor := crDefault;
end;
end;procedure TMainForm.dcbDrivesChange(Sender: TObject);
begin
dolDirectories.Drive := dcbDrives.Drive;
end;end.
以上代码共用四处不明,谢谢大家了!
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, FileCtrl, Grids, Outline, DirOutln;type
TMainForm = class(TForm)
dcbDrives: TDriveComboBox;
edtFileMask: TEdit;
lblFileMask: TLabel;
btnSearchForFiles: TButton;
lbFiles: TListBox;
dolDirectories: TDirectoryOutline;
procedure btnSearchForFilesClick(Sender: TObject);
procedure dcbDrivesChange(Sender: TObject);
private
FFileName: String;
function GetDirectoryName(Dir: String): String;
procedure FindFiles(APath: String);
end;var
MainForm: TMainForm;implementation{$R *.DFM}function TMainForm.GetDirectoryName(Dir: String): String;begin
if Dir[Length(Dir)]<> '\' then
Result := Dir+'\'
else
Result := Dir;
end;procedure TMainForm.FindFiles(APath: String);
var
FSearchRec,
DSearchRec: TSearchRec;
FindResult: integer; function IsDirNotation(ADirName: String): Boolean;
begin
Result := (ADirName = '.') or (ADirName = '..'); ???这句代码有什么用?
end;begin
APath := GetDirectoryName(APath); // Obtain a valid directory name FindResult := FindFirst(APath+FFileName,faAnyFile+faHidden+
faSysFile+faReadOnly,FSearchRec); ???在findfirst函数中就写 一个faanyfile不就行了 try
while FindResult = 0 do
begin
lbFiles.Items.Add(LowerCase(APath+FSearchRec.Name));
FindResult := FindNext(FSearchRec);
end;
FindResult := FindFirst(APath+'*.*', faDirectory, DSearchRec); ???这里的fadirectory做 什么用啊 while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then ???这句代码做什么用?
FindFiles(APath+DSearchRec.Name); // Recursion here
FindResult := FindNext(DSearchRec);
end;
finally
FindClose(FSearchRec);
end;
end;procedure TMainForm.btnSearchForFilesClick(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
try
lbFiles.Items.Clear;
FFileName := edtFileMask.Text;
FindFiles(dolDirectories.Directory);
finally
Screen.Cursor := crDefault;
end;
end;procedure TMainForm.dcbDrivesChange(Sender: TObject);
begin
dolDirectories.Drive := dcbDrives.Drive;
end;end.
以上代码共用四处不明,谢谢大家了!
解决方案 »
- 使用OleContainer.CreateObjectFromFile打开一个excel文件,请问怎样才能修改其中内容?
- 请问TForm1和TForm2的共同父类是什么?
- 如何在打开的Excel中增加一个新的sheet4,并将数据写入新的sheet4,如何保存数据(Excel文件名保持不变)??
- 如何向类似于LISTVIEW里每一栏对应加入一条进度条的方法???
- 学妹想问一个简单的问题
- Treeview.items.addobject函数中的第三个参数point有什么用?
- 在Delphi中访问Oracle数据库的一个问题。
- 请教API高手!!! (关于使窗体的关闭按钮置灰)
- 我采集的数据在服务器上,客户机请求数据,我是否一定要用c/s结构?
- 最后测试才发现我的memo类型的字段只能正确存储100多汉字,再多了就是"鑒",请问这是为什么?谢谢。
- dll 中的函数使用 TAdoConnection 等 Delphi 中特有的类型,会不会不太好?
- 争shell 打开explorer 的程序(在线等
如果找到的文件是 "." or "..", 就好象你在 dos 下輸入 dir 一樣, 這兩個就返回 true,
然後, 下面如果找到這兩天, 就忽略不處理
如果有目錄, 就可以繼續下面的查找, 如果已經沒有下級目錄了, 下面的就不用再找了
faSysFile+faReadOnly,FSearchRec); faAnyfile不就等于全部了吗? 为何还要写 faAnyFile+faHidden+faSysFile+faReadOnly 这么多