function BrowseFolder:string; //浏览文件夹函数
var
Info:TBrowseInfo;
Dir:array[0..260] of char;
ItemId:PItemIDList;
begin
with Info do
begin
hwndOwner:=MainForm1.Handle;
pidlRoot:=nil;
pszDisplayName:=nil;
lpszTitle:='Select files folder:';
ulFlags:=0;
lpfn:=nil;
lParam:=0;
iImage:=0;
end;
ItemId:=SHBrowseForFolder(Info);
if ItemId<>nil then
begin
SHGetPathFromIDList(ItemId,@Dir);
Result:=string(Dir);
end;
end;
function TMainForm1.Getdir(dir: string);string; //对路径加'\'
begin
if dir[length(dir)] <> '\' then
result := dir + '\'
else
result := dir;
end;procedure TMainForm1.FindFiles(path: string; filename: string);
var
findresult: integer;
frec, drec: Tsearchrec; function DirChild (cdir: string): Boolean; //是否为子目录
begin
result := (cdir = '.') or (cdir = '..');
end;
begin path := Getdir(path);
findresult := findfirst(path + filename, faanyfile + fahidden + fasysfile + fareadonly, frec);
try while findresult = 0 do
begin
list1.Items.Add(lowercase(path + frec.Name));
findresult := findnext(frec);
end; findresult := findfirst(path + '*.*', fadirectory, drec);
while findresult = 0 do
begin
if ((drec.Attr and fadirectory) = fadirectory) and not DirChild(drec.Name) then findfiles(path + drec.Name); //------------不能编译------------ findresult := findnext(drec);
end;
finally
findclose(frec);
end;
end;procedure TMainForm1.Action1Execute(Sender: TObject);
var
Dir: String;
begin
screen.Cursor := crhourglass;
try
Dir := BrowseFolder;
FindFiles(Dir,' *.exe');
finally
screen.Cursor := crdefault;
end;
end;end.
var
Info:TBrowseInfo;
Dir:array[0..260] of char;
ItemId:PItemIDList;
begin
with Info do
begin
hwndOwner:=MainForm1.Handle;
pidlRoot:=nil;
pszDisplayName:=nil;
lpszTitle:='Select files folder:';
ulFlags:=0;
lpfn:=nil;
lParam:=0;
iImage:=0;
end;
ItemId:=SHBrowseForFolder(Info);
if ItemId<>nil then
begin
SHGetPathFromIDList(ItemId,@Dir);
Result:=string(Dir);
end;
end;
function TMainForm1.Getdir(dir: string);string; //对路径加'\'
begin
if dir[length(dir)] <> '\' then
result := dir + '\'
else
result := dir;
end;procedure TMainForm1.FindFiles(path: string; filename: string);
var
findresult: integer;
frec, drec: Tsearchrec; function DirChild (cdir: string): Boolean; //是否为子目录
begin
result := (cdir = '.') or (cdir = '..');
end;
begin path := Getdir(path);
findresult := findfirst(path + filename, faanyfile + fahidden + fasysfile + fareadonly, frec);
try while findresult = 0 do
begin
list1.Items.Add(lowercase(path + frec.Name));
findresult := findnext(frec);
end; findresult := findfirst(path + '*.*', fadirectory, drec);
while findresult = 0 do
begin
if ((drec.Attr and fadirectory) = fadirectory) and not DirChild(drec.Name) then findfiles(path + drec.Name); //------------不能编译------------ findresult := findnext(drec);
end;
finally
findclose(frec);
end;
end;procedure TMainForm1.Action1Execute(Sender: TObject);
var
Dir: String;
begin
screen.Cursor := crhourglass;
try
Dir := BrowseFolder;
FindFiles(Dir,' *.exe');
finally
screen.Cursor := crdefault;
end;
end;end.
解决方案 »
- 请高人指点
- TBDEDataSet中有一个UpdatesPending属性来确定Cache是否有未决的记录,TAdoDataSet中也有类似的吗?
- 高手请进来教一下新手吧!!
- 怎么使用ole动态的创建autocad的对象?
- 怎样在客户端调用服务器端的串口资源,并操纵该串口和外界通讯
- DBCheckBox如何更新数据库?
- 关于环境变量设置问题
- 求InstallShield Profressional 7.0的下载地址。
- 刷新出错
- 如何关掉局域网上的某台计算机?
- 请教:如何判断 进程死掉??(分不够再加)
- "xp+d7" 出现大白窗口,程序好像被挂起,我已经重装过系统 w2k 没有这个现象,请问如何入手解决
function FindAllFiles(Path, Filter: string; AList: TStrings): Integer;
//查找指定目录下指定扩展名的所有文件;Path:以'\'结尾的路径名;
//Filter:指定扩展名,为空时查找所有文件;
function HasExt(A, B: string): Boolean;
begin
Result := (B = '')
or (UpperCase(ExtractFileExt(A)) = UpperCase(ExtractFileExt(B)));
end;var
F: TSearchRec;
Ret: Integer;
begin
Result := 0;
Ret := FindFirst(Path + '*', faAnyFile, F);
while Ret = 0 do
begin
if F.Attr = faDirectory then
begin
if (F.Name <> '.') and (F.Name <> '..') then
Result := Result + FindAllFiles(Path + F.Name + '\', Filter, AList);
end
else if HasExt(F.Name, Filter) then
begin
AList.Add(Path + F.Name);
Inc(Result);
end;
Ret := FindNext(F);
end;
FindClose(F);
end;
FINDNEXT
两个API搞定..
FINDNEXT
两个API搞定..