我使用下面的代码从目录和子目录的文件搜索
如何修改此代码以从文件搜索中排除任何特定的文件夹
如从驱动器C:中排除Windows目录
procedure FindFilePattern(root:String;pattern:String);
var
SR:TSearchRec;
begin
root:=IncludeTrailingPathDelimiter(root);
if FindFirst(root+'*.*',faDirectory or faHidden ,SR) = 0 then
begin
repeat
Application.ProcessMessages;
if ((SR.Attr and faDirectory) = faDirectory ) and (pos('.',SR.Name)=0) then
FindFilePattern(root+SR.Name,pattern)
else
begin
if pos(pattern,SR.Name)>0 then Form1.ListBox1.Items.Add(Root+SR.Name);
end;
until FindNext(SR)<>0;
FindClose(SR);
end;
end;
我找了很多关于它,但没有找到任何合适的解决方案
2条答案
按热度按时间arknldoa1#
对你的问题有一些评论…
排除某些目录的简单方法是传递要从搜索中排除的文件夹列表。
在这种情况下,您可以添加一个新参数,其中包含您不想浏览的目录列表(
TStrings
)。header看起来像这样:调用应该是这样的:
您必须修改过程以检测这些元素,而不是浏览它:
另一个注解是关于这一行的,这一行用于返回结果。正确的做法是使用输出参数,而不是从函数内部引用接口的元素。
为找到的元素列表添加新参数:
调用将是这样的:
程序是这样的:
8dtrkrch2#
从System.IOUtils单元中使用TDirectory.GetDirectories。