gpt4 book ai didi

delphi - Delphi中如何通过所有子目录搜索文件

转载 作者:行者123 更新时间:2023-12-03 15:18:47 24 4
gpt4 key购买 nike

我实现了此代码,但我再次无法搜索子目录。

     procedure TFfileSearch.FileSearch(const dirName:string);
begin
//We write our search code here
if FindFirst(dirName,faAnyFile or faDirectory,searchResult)=0 then
begin
try
repeat
ShowMessage(IntToStr(searchResult.Attr));
if (searchResult.Attr and faDirectory)=0 then //The Result is a File
//begin
lbSearchResult.Items.Append(searchResult.Name)
else
begin
FileSearch(IncludeTrailingBackSlash(dirName)+searchResult.Name);
//
end;
until FindNext(searchResult)<>0
finally
FindClose(searchResult);
end;
end;
end;
procedure TFfileSearch.btnSearchClick(Sender: TObject);
var
filePath:string;
begin
lbSearchResult.Clear;
if Trim(edtMask.Text)='' then
MessageDlg('EMPTY INPUT', mtWarning, [mbOK], 0)
else
begin
filePath:=cbDirName.Text+ edtMask.Text;
ShowMessage(filePath);
FileSearch(filePath);

end;

结束;

我正在 E:\驱动器中搜索 *.ini 文件。所以最初的 filePath 是 E:*.ini。但代码不会搜索 E:\驱动器中的目录。如何纠正?

提前致谢

最佳答案

您无法在调用 FindFirst 时对文件扩展名应用限制。如果您这样做,则不会枚举目录。相反,您必须检查代码中是否有匹配的扩展名。尝试这样的事情:

procedure TMyForm.FileSearch(const dirName:string);
var
searchResult: TSearchRec;
begin
if FindFirst(dirName+'\*', faAnyFile, searchResult)=0 then begin
try
repeat
if (searchResult.Attr and faDirectory)=0 then begin
if SameText(ExtractFileExt(searchResult.Name), '.ini') then begin
lbSearchResult.Items.Append(IncludeTrailingBackSlash(dirName)+searchResult.Name);
end;
end else if (searchResult.Name<>'.') and (searchResult.Name<>'..') then begin
FileSearch(IncludeTrailingBackSlash(dirName)+searchResult.Name);
end;
until FindNext(searchResult)<>0
finally
FindClose(searchResult);
end;
end;
end;

procedure TMyForm.FormCreate(Sender: TObject);
begin
FileSearch('c:\windows');
end;

关于delphi - Delphi中如何通过所有子目录搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6546105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com