Delphi 如何将TFileAttribute开关添加到IOUtils函数
下面显示了使用Delphi 如何将TFileAttribute开关添加到IOUtils函数,delphi,Delphi,下面显示了使用IOUtils计算文件夹和文件数的两个函数。如何添加开关(CountHidden)以使用faHiddenTFileAttribute切换计数文件或文件夹 function SubDirectoryCount( const Path: string; const CountHidden: boolean; const Recurse: boolean ): Cardinal; { Counts all the sub-directories of a specified di
IOUtils
计算文件夹和文件数的两个函数。如何添加开关(CountHidden
)以使用faHidden
TFileAttribute
切换计数文件或文件夹
function SubDirectoryCount( const Path: string; const CountHidden: boolean; const Recurse: boolean ): Cardinal;
{ Counts all the sub-directories of a specified directory. If Recurse is true
all sub-directories are counted recursively, otherwise only immediate
sub-directories are counted. Count Hidden toggles counting hidden files (faHidden). }
var
StrArray: Types.TStringDynArray; // array of subdirectories
SearchOption: IOUtils.TSearchOption; // directory search option
begin
if Recurse then
SearchOption := IOUtils.TSearchOption.soAllDirectories
else
SearchOption := IOUtils.TSearchOption.soTopDirectoryOnly;
StrArray := IOUtils.TDirectory.GetDirectories( Path, '*', SearchOption );
Result := length( StrArray );
end;
function SubDirectoryFileCount( const Path: string; const CountHidden: boolean; const Recurse: boolean ): Cardinal;
{ Counts all the files of a specified directory. If Recurse is true
files in all sub-directories are counted recursively, otherwise only immediate
sub-directories are counted. Count Hidden toggles counting hidden files (faHidden).}
var
StrArray: Types.TStringDynArray; // array of subdirectories
SearchOption: IOUtils.TSearchOption; // directory search option
begin
if Recurse then
SearchOption := IOUtils.TSearchOption.soAllDirectories
else
SearchOption := IOUtils.TSearchOption.soTopDirectoryOnly;
StrArray := IOUtils.TDirectory.GetFiles( Path, '*', SearchOption );
Result := length( StrArray );
end;
另外,这两个功能是否有任何改进?
我正在Windows 7上使用Delphi 2010。您可以使用类
检查这些样品
function SubDirectoryCount( const Path: string; const CountHidden: boolean; const Recurse: boolean ): Cardinal;
var
StrArray : Types.TStringDynArray;
SearchOption : IOUtils.TSearchOption;
Predicate : TDirectory.TFilterPredicate;
begin
if Recurse then
SearchOption := IOUtils.TSearchOption.soAllDirectories
else
SearchOption := IOUtils.TSearchOption.soTopDirectoryOnly;
Predicate := function(const Path: string; const SearchRec: TSearchRec): Boolean
begin
Result := (SearchRec.Attr and faHidden)=0;
end;
if CountHidden then
StrArray := IOUtils.TDirectory.GetDirectories( Path, '*', SearchOption)
else
StrArray := IOUtils.TDirectory.GetDirectories( Path, '*', SearchOption, Predicate);
Result := length(StrArray);
end;
function SubDirectoryFileCount( const Path: string; const CountHidden: boolean; const Recurse: boolean ): Cardinal;
var
StrArray : Types.TStringDynArray;
SearchOption : IOUtils.TSearchOption;
Predicate : TDirectory.TFilterPredicate;
begin
if Recurse then
SearchOption := IOUtils.TSearchOption.soAllDirectories
else
SearchOption := IOUtils.TSearchOption.soTopDirectoryOnly;
Predicate := function(const Path: string; const SearchRec: TSearchRec): Boolean
begin
Result := (SearchRec.Attr and faHidden)=0;
end;
if CountHidden then
StrArray := IOUtils.TDirectory.GetFiles( Path, '*', SearchOption )
else
StrArray := IOUtils.TDirectory.GetFiles( Path, '*', SearchOption, Predicate);
Result := length(StrArray);
end;
最初的问题附有一位主持人的评论:“这个问题和答案包含Embarcadero版权所有的代码。它不仅会以当前的形式关闭,还会被删除。”这句话正确吗?@DavidHeffernan我不这么认为,最初的问题与这个问题非常相似,答案是我自己写的(没有使用任何受版权保护的代码)。所以我看不到任何受Embarcadero版权保护的代码。我认为是哪个版主犯了错误。@RRUZ问题只是关于如何使用IOUtils的标准VCLCode。DelphiDabbler是一个网站,在这里,我是一个主要的贡献者,在许多用户之间共享代码。我不记得是我写的原始代码还是Peter写的,但是Delphi Dabbler站点是开源的“许可证不得限制任何一方将软件作为包含多个不同来源程序的软件总发行版的一部分出售或赠送。许可证不要求此类销售收取特许权使用费或其他费用。”这是一种特殊情况(目前仍在敲定中),但请注意,在这里重新询问一个已关闭和已删除的问题是一种相当严重的违规行为,可能会导致您的帐户被暂停。请不要再像这样仓促发帖;最好去讨论发生了什么,并可能把事情弄清楚。很抱歉……我不知道如何找出原因原文已被删除。