Delphi 计算文件夹中的文件夹数
有人知道我可以用来计算指定目录中文件夹数量的代码吗?我知道的最简单的代码使用Delphi 计算文件夹中的文件夹数,delphi,delphi-2010,Delphi,Delphi 2010,有人知道我可以用来计算指定目录中文件夹数量的代码吗?我知道的最简单的代码使用t目录从IOUtils单元: function GetDirectoryCount(const DirName: string): Integer; begin Result := Length(TDirectory.GetDirectories(DirName)); end; TDirectory.GetDirectories实际上返回一个包含目录名称的动态数组,因此这有点低效。如果您想要最有效的解决方案,那么应
t目录
从IOUtils
单元:
function GetDirectoryCount(const DirName: string): Integer;
begin
Result := Length(TDirectory.GetDirectories(DirName));
end;
TDirectory.GetDirectories
实际上返回一个包含目录名称的动态数组,因此这有点低效。如果您想要最有效的解决方案,那么应该使用FindFirst
枚举
function GetDirectoryCount(const DirName: string): Integer;
var
res: Integer;
SearchRec: TSearchRec;
Name: string;
begin
Result := 0;
res := FindFirst(TPath.Combine(DirName, '*'), faAnyFile, SearchRec);
if res=0 then begin
try
while res=0 do begin
if SearchRec.FindData.dwFileAttributes and faDirectory<>0 then begin
Name := SearchRec.FindData.cFileName;
if (Name<>'.') and (Name<>'..') then begin
inc(Result);
end;
end;
res := FindNext(SearchRec);
end;
finally
FindClose(SearchRec);
end;
end;
end;
函数GetDirectoryCount(const DirName:string):整数;
变量
res:整数;
SearchRec:TSearchRec;
名称:字符串;
开始
结果:=0;
res:=FindFirst(TPath.Combine(DirName,'*')、faAnyFile、SearchRec);
如果res=0,则开始
尝试
当res=0时,开始
如果搜索rec.FindData.dwFileAttributes和faDirectory0,则开始
名称:=SearchRec.FindData.cFileName;
如果是(名称“.”)和(名称“..”),则开始
公司(结果);
结束;
结束;
res:=FindNext(SearchRec);
结束;
最后
FindClose(SearchRec);
结束;
结束;
结束;
David,为什么在
FindFirst
中使用faAnyFile而不是faDirectory?@Whiler我想包括只读对象、隐藏对象和系统对象。@David,如果GetDirectoryCount为零,是否有可能泄漏?文档中说,只有在匹配的FindFirst正确时才调用FindClose。@LU RD是的,我认为您是对的。我太懒了。现在是否更好?如果文件夹存在,则至少有2个结果:.&;o) 或者,在某些特定情况下,是否可能不使用它们?