Directory ADA-使用模式搜索目录-不按应有的方式返回

Directory ADA-使用模式搜索目录-不按应有的方式返回,directory,ada,Directory,Ada,我的程序的这一部分应该列出目录中包含名称中“.txt”的所有文件,但在运行时不会返回任何内容。如果我删除“.txt”并将其保留为空字符串“”,那么它将正常工作并返回所有文件名,包括.txt文件,因此我无法找出我在这里做错了什么 procedure Search_Directory is use Ada.Directories; procedure Write_Search_Item(Search_Item : in Directory_Entry_Typ

我的程序的这一部分应该列出目录中包含名称中“.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;

在包
Ada.Directories
中定义的
Search
函数接受一个模式参数,该模式参数可以是空字符串,也可以是实现定义的形式。在GNAT中,此模式应该是
System.Regexp
中描述的正则表达式(另请参见第二个语法,一个“全局模式”)。

您可以尝试
*.txt
。是的,现在可以了,谢谢您您的操作系统可能有一个程序来列出与模式匹配的文件(
dir
用于DOS/Windows,而
ls
用于基于Unix的操作系统)。我们将该程序称为
.txt
在您的系统上做什么?您将使用什么模式来匹配包含
.txt
的所有文件?您应该为
搜索提供相同的模式。