我的程序的这一部分应该列出名称中包含“.txt”的目录中的所有文件,但它在运行时不返回任何内容。如果我删除“.txt”并将其保留为空字符串“”,那么它会完美运行并返回所有文件名,包括 .txt 文件,所以我无法弄清楚我在这里做错了什么。
procedure Search_Directory is
use Ada.Directories;
procedure Write_Search_Item(Search_Item : in Directory_Entry_Type) is
begin
Put(Item => Simple_Name(Directory_Entry => Search_Item));
New_Line;
end Write_Search_Item;
Filter : Constant Filter_Type := (Ordinary_File => True,
Special_File => False,
Directory => True);
begin
Search(Directory => Current_Directory,
Pattern => (".txt"),
Filter => Filter,
Process => Write_Search_Item'Access);
end Search_Directory;
最佳答案
Search
函数定义在 Ada.Directories
包中,采用模式参数,该参数可以是空字符串,也可以是实现定义的形式 RM A.16 (111/ 2) .在 GNAT 中,此模式应该是 System.Regexp
中描述的正则表达式(另请参阅 here )(另请参阅 here ,第二种语法,“globbing 模式”)。
关于directory - ADA - 使用模式搜索目录 - 没有按预期返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62557505/