ADA - 使用模式搜索目录 - 未按预期返回

Ben*_*Ben 2 directory ada

我程序的这一部分应该列出名称中包含“.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;
Run Code Online (Sandbox Code Playgroud)

Dee*_*Dee 6

Search包中定义的函数Ada.Directories采用模式参数,该参数是空字符串或实现定义的RM A.16 (111/ 2) 形式。在 GNAT 中,这个模式应该是一个正则表达式(另请参阅此处System.Regexp(另请参阅此处,第二种语法,“通配模式”)。