Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4134 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  [Ada] Passage du paramètre "../*" et Opération_Iteration

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Ada] Passage du paramètre "../*" et Opération_Iteration

n°2520541
lady287
La lumière fuse
Posté le 19-03-2026 à 10:56:43  profilanswer
 

Bonjour !
J'ai écri une alternatilve à la commande "ls".
Sur Gnu/Linux ; L'interprétation du caractère "*" (asterisque) dans un "shell" ou interpréteur de commande tel que Bash (Bourne Again Shell) comme je l'utilise, m'empèche d'interpréter moi même le caractère et je cherche une solution et aussi une solution au problème posé ici concernant l'argument "../*" retournant à l'appel de ce programme par l'interprétationde la dite commande "xls" le répertoire courant à l'instar du contenu du premier niveau et les contenus au cas échéant si ce sont des répertoire comme le ferait la commande "ls *".
 
 
Ma commande commande name retourne la chaine passée jusqu'à la premèure espace au cas échéant, la chaîne si non.
J'appelle spawn avec lla comamnde commande_name(Cmd_Line) et l'largument Args(1..0) si il n'y à pas de paramètre ; Si non, l'argument Args(2..Args'length), alors que le tableau d'argument est obtenu avec Argument_String_To_List et est traité avec Normalize_Argument
 
La procédure Iteration appelle la procédure add_name pour ajouter chacune des ocurance de l'instance de Gnat.Directory.Operation_Iteration.Wilcard_Iterator.
 
Le contenu lu est malgrè tout pour "../*" le contenu courant.
 
Quel est mon erreur s'il vous plait ?
 
Merci !


Message édité par lady287 le 19-03-2026 à 10:59:19

---------------
jovalise (C) 2002 Manuel De Girardi ; web site
mood
Publicité
Posté le 19-03-2026 à 10:56:43  profilanswer
 

n°2520549
lady287
La lumière fuse
Posté le 19-03-2026 à 11:18:23  profilanswer
 

sources :
 
 
Commande_Name

Code :
  1. function Command_Name (Line : in String) return String is
  2.   begin
  3.      if Line'Length = 0 then
  4.      return "";
  5.      elsif Index_Non_Blank(Line) = 0 then
  6.      return "";
  7.      elsif (Index(Line, " " ) > Index_Non_Blank(Line)) then
  8.      return Line(Index_Non_Blank(Line)..Index(Line, " " )-1);
  9.      else
  10.      return Line;
  11.      end if;
  12.   end Command_Name;


 
 
 

Code :
  1. with Ada.Containers.Vectors;
  2. use Ada.Containers;
  3. with Ada.Text_Io;
  4. with Ada.Directories;
  5. use Ada.Directories;
  6. with Ada.Calendar.Formatting;
  7. use Ada.Calendar;
  8. with Ada.Command_Line;
  9. use Ada.Command_Line;
  10. with Ada.Strings.Fixed;
  11. use Ada.Strings;
  12. with Gnat.Directory_Operations.Iteration;
  13. use Gnat.Directory_Operations.Iteration;
  14. with Gnat.Os_Lib;
  15. use Gnat.Os_Lib;
  16. with Gnat.Command_Line;
  17. use Gnat.Command_Line;
  18. with Lib.Shared;
  19. use Lib.Shared;
  20. with PragmARC.Ansi_Tty_Control;
  21. use PragmARC.Ansi_Tty_Control;
  22. procedure Xls is
  23.  
  24.  
  25.  
  26.   function "=" (Left, Right : in String_Access) return Boolean is
  27.   begin
  28.      return Left.all = Right.all;
  29.   end "=";
  30.  
  31.   function "<" (Left, Right : in String_Access) return Boolean is
  32.   begin
  33.      return Left.all < Right.all;
  34.   end "<";
  35.  
  36.  
  37.   package Wstr_Vectors is new Vectors (Positive, String_Access, "=" );
  38.   package Sorting is new Wstr_Vectors.Generic_Sorting("<" );
  39.   use Wstr_Vectors;
  40.   use Sorting;
  41.   use Ada.Text_Io;
  42.  
  43.   Target : Vector;
  44.   Dir_List : Vector;
  45.  
  46.   File_Index : Natural := 0;
  47.  
  48.  
  49.   procedure Add_Name (Name  : in String;
  50.                Num   : in Positive;
  51.                Verax : in out Boolean) is
  52.   begin
  53.      Target := Target & new String ' (Name);      
  54.      File_Index := File_Index + 1;
  55.   end Add_Name;
  56.  
  57.   procedure Iterator is new Wildcard_Iterator (Add_Name);
  58.  
  59.  
  60.  
  61.  
  62.  
  63.   white     : constant String := Character'Val(27) & "[01;37m";
  64.   Magenta     : constant String := Character'Val(27) & "[01;35m";
  65.   Cyan     : constant String := Character'Val(27) & "[01;36m";
  66.   Blue     : constant String := Character'Val(27) & "[01;34m";
  67.   Red     : constant String := Character'Val(27) & "[01;31m";
  68.   Green     : constant String := Character'Val(27) & "[01;32m";
  69.   Yellow     : constant String := Character'Val(27) & "[01;33m";
  70.   Normal    : constant String := Character'Val(27) & "[00m";
  71.  
  72.  
  73.   type File_Set is array (Positive range <> ) of String_Access;
  74.  
  75.   Set : File_Set(1..4096);  
  76.  
  77.  
  78.   Char_Count, Line_By_Column, Col, Top_Col, Line :  Positive := 1;
  79.  
  80.   Long_Option : Boolean := False;
  81.   Date : Time := Clock;
  82.   Size : Long_integer := 0;  
  83.  
  84.   Arguments : Vector;
  85.  
  86.   Dir_Match : Search_Type;    
  87.   Dir_Path  : Directory_Entry_Type;
  88.  
  89.   Column_By_Page : Positive := 1;
  90.   Width : Natural := 0;
  91.   Hiegh : Natural := 0;
  92.   type File_Table is array (Positive range <>, Positive range <> ) of String_Access;
  93.   L_Index : Natural := 0;
  94.   C_Index : Natural := 0;
  95.   File_Counter : Natural := 0;
  96.  
  97.  
  98. begin  
  99.   begin
  100.      loop
  101.      case Getopt ("l" ) is
  102.         when ASCII.NUL => exit;
  103.  
  104.         when 'l' =>
  105.            if Full_Switch = "l" then
  106.           Long_Option := True;
  107.            else
  108.           Put_Line ("invalid option" );
  109.            end if;    
  110.         when others =>
  111.            raise Program_Error; -- cannot occur
  112.      end case;
  113.      end loop;
  114.      loop
  115.     
  116.      declare
  117.         S : constant String := Get_Argument (Do_Expansion => True);
  118.      begin
  119.         exit when S'Length = 0;
  120.         Arguments := Arguments & new String ' (S);
  121.      end;
  122.      end loop;
  123.   exception
  124.      when Invalid_Switch    => Put_Line ("Invalid Switch " & Full_Switch);
  125.      when Invalid_Parameter => Put_Line ("No parameter for " & Full_Switch);
  126.   end;
  127.  
  128.   if not Is_Empty(Arguments) then
  129.      
  130.      for Arg in 1..Length(Arguments) loop
  131.  
  132.        declare
  133.           E : String := Element(Arguments, Integer(Arg)).all;
  134.        begin
  135.         
  136.         if E = ".." then
  137.            iterator("../*" );
  138.         elsif E = "." or E = "./" then
  139.           
  140.            iterator("./*" );
  141.         elsif E = "*" or E = "./*" then
  142.           
  143.            iterator("./*/*" );
  144.         elsif E = "../*" then
  145.            Put_Line(E);
  146.            declare
  147.           Line : String := Get_Line;
  148.            begin
  149.           null;
  150.            end;
  151.         
  152.            iterator("../*/*" );
  153.  
  154.         elsif not Is_Directory (E) then
  155.           
  156.            iterator(E);
  157.           
  158.         --  elsif Is_Directory (Containing_Directory(E)) then
  159.           
  160.         --     iterator(Containing_Directory(E) & "/*" );
  161.         elsif Is_Directory (E) then
  162.           
  163.            iterator(E & "/*" );
  164.         else
  165.            Put_Line(E);
  166.            declare
  167.           Line : String := Get_Line;
  168.            begin
  169.           null;
  170.            end;
  171.            iterator(base_Name(E & "/*" ));
  172.           
  173.         end if;
  174.         
  175.         
  176.         
  177.           Sort(Target);
  178.  
  179.           File_Index := 0;
  180.           if not Is_Empty(Target) then
  181.              for Name in 1..Length(Target) loop
  182.  
  183.             declare
  184.                File_Name : String_Access := Element(Target, Integer(Name));
  185.             begin
  186.  
  187.                if Is_Directory(File_Name.all) then
  188.               Set(File_Index+1) := new String ' (Blue & Simple_Name(File_Name.all) & '/') ;
  189.               File_Index := File_Index + 1;
  190.                elsif Is_Executable_file(File_Name.all) then
  191.               Set(File_Index+1) := new String ' (Green & simple_Name(File_Name.all ));
  192.               File_Index := File_Index + 1;
  193.                elsif Extension(File_Name.all) = "tgz" or Extension(File_Name.all) = "tar" or    
  194.                  Extension(File_Name.all) = "zip" then
  195.             
  196.               Set(File_Index+1) := new String ' (Red & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  197.               File_Index := File_Index + 1;    
  198.                elsif Extension(File_Name.all) = "png" or Extension(File_Name.all) = "jpg" or    
  199.                  Extension(File_Name.all) = "jpeg" then
  200.             
  201.               Set(File_Index+1) := new String ' (magenta & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  202.               File_Index := File_Index + 1;
  203.                elsif Extension(File_Name.all) = "iso" then
  204.               Set(File_Index+1) := new String ' (yellow & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  205.               File_Index := File_Index + 1;
  206.                elsif Is_Regular_File(File_Name.all) then
  207.               Set(File_Index+1) := new String ' (white & simple_Name(File_Name.all));
  208.               File_Index := File_Index + 1;
  209.             
  210.                end if;
  211.             end;
  212.              end loop;
  213.           end if;
  214.         
  215.           --
  216.         
  217.           --
  218.  
  219.           --
  220.  
  221.           if File_Index /= 0 then
  222.              if Long_Option then        
  223.             for I in 1..File_Index loop            
  224.             
  225.                if Is_Directory (Element(Target, Integer(I)).all) then        
  226.             
  227.               declare        
  228.                  Dir : String := Element(Target, integer(I)).all;    
  229.               begin  
  230.               
  231.                  if Dir /= "." and Dir /= ".." then
  232.                     Start_Search(Dir_Match, Dir, Dir);        
  233.  
  234.                     Get_Next_Entry(Dir_Match, Dir_Path);    
  235.  
  236.                     Date := Ada.Directories.Modification_time(Dir_Path);    
  237.  
  238.                     Size := Long_Integer(Ada.Directories.Size(Dir_Path));
  239.                  end if;
  240.               exception
  241.                  when others =>
  242.                     null;
  243.               end;    
  244.                else    
  245.               declare        
  246.                  Dir : String := Element(Target, integer(I)).all;    
  247.               begin  
  248.                  if Dir /= "." and Dir /= ".." then
  249.  
  250.                     Date := Ada.Directories.Modification_time(Full_Name(Dir));
  251.  
  252.                     Size := Long_Integer(Ada.Directories.Size(Full_Name(Dir)));  
  253.                  end if;
  254.               end;
  255.                end if;
  256.  
  257.               
  258.                if Line_Cur + Line >= 66 then
  259.             New_Line;
  260.             Put(Position(67, 1) & Formatting.Image(Date));
  261.             Put(Position(67, 20) & Long_Integer'Image(Long_Integer(Size)));
  262.             Put(Position(67, 35) & Set(I).all & Normal);
  263.               
  264.                else
  265.             Put(Position(Line_Cur + Line, 1) & Formatting.Image(Date));
  266.             Put(Position(Line_Cur + Line, 20) & Long_Integer'Image(Long_Integer(Size)));
  267.             Put(Position(Line_Cur + Line, 35) & Set(I).all & Normal);
  268.               Line := Line + 1;    
  269.                end if;
  270.             
  271.              Size := 0;
  272.             
  273.             end loop;        
  274.  
  275.             Line_Cur := Positive'Min(Line_Cur + Line,  67);
  276.             Put(Position(Line_Cur, 1) & white);
  277.              else
  278.             for Iter in 1..File_Index loop
  279.                if Set(Iter)'Length > Top_Col then
  280.               Top_Col := Set(Iter)'Length;
  281.                end if;
  282.                Char_Count := Char_Count + Set(Iter)'Length;
  283.             end loop;
  284.             Line_By_Column := File_index/(240/(Top_Col+4))+1;
  285.           
  286.             --Line_By_Column :=  (240/Top_Col+4)+1;
  287.             Column_By_Page := (File_Index / Line_By_Column)+1;
  288.             declare
  289.                Table : File_Table(1..Line_By_Column, 1..Column_By_Page);
  290.             begin
  291.             
  292.                for column in Table'Range(2) loop
  293.               for Line in Table'range(1) loop
  294.                  Table(Line, Column) := Set(File_Counter+1);
  295.                File_Counter := File_Counter+1;
  296.               end loop;
  297.                end loop;
  298.                File_Counter := 0;
  299.                Main1 :
  300.                for Iter_L in Table'range(1) loop
  301.             
  302.               for Iter_C in Table'Range(2) loop
  303.                  if not Gnat.Os_Lib."="(Table(Iter_L, Iter_C), null) then
  304.                   Put(Position(Line_Cur + Line + 1 , Col) & Table(Iter_L, Iter_C).all);
  305.                   Col := Col + Top_Col;
  306.                   File_Counter := File_Counter+1;
  307.                  end if;
  308.                  exit Main1 when File_Counter = File_Index;
  309.               end loop;
  310.               if Line_Cur + Line >= 66 then
  311.                  New_Line;
  312.             else
  313.                Line := Line + 1;
  314.               end if;
  315.               Col := 1;
  316.                end loop main1;
  317.             
  318.             end;
  319.             
  320.                --  for Iter in 1..File_Index loop
  321.                --      if Set(Iter)'Length > Top_Col then
  322.                --         Top_Col := Set(Iter)'Length;
  323.                --      end if;
  324.           
  325.                --      Put(Position(Line_Cur + Line + 1 , Col) & Set(Iter).all);
  326.                --      if Line_Cur + Line >= 66 then
  327.                --         New_Line;
  328.                --      end if;
  329.                --      Line := Line+1;
  330.                --      if Line+1 >= Line_By_Column then
  331.                --         Col := Col + Top_Col;
  332.                --         Line := 1;
  333.                --      end if;
  334.             
  335.                --  end loop;
  336.             Line_Cur := Line_Cur + Line_By_Column+1;
  337.             Col := 1;
  338.             Top_Col := 1;
  339.             Line := 1;
  340.              end if;
  341.           end if;
  342.        end;
  343.      end loop;
  344.   else
  345.      Iterator(Current_Directory & "/*" );
  346.      Sort(Target);
  347.      File_Index := 0;
  348.      if not Is_Empty(Target) then
  349.           for Name in 1..Length(Target) loop
  350.              declare
  351.                 File_Name : String_Access := Element(Target, Integer(Name));
  352.              begin
  353.           
  354.                 if Is_Directory(File_Name.all) then
  355.                Set(File_Index+1) := new String ' (Blue & Simple_Name(File_Name.all) & '/') ;
  356.                File_Index := File_Index + 1;
  357.                 elsif Is_Executable_file(File_Name.all) then
  358.                Set(File_Index+1) := new String ' (Green & simple_Name(File_Name.all ));
  359.                File_Index := File_Index + 1;
  360.                 elsif Extension(File_Name.all) = "tgz" or Extension(File_Name.all) = "tar" or    
  361.               Extension(File_Name.all) = "zip" then
  362.           
  363.                Set(File_Index+1) := new String ' (Red & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  364.                File_Index := File_Index + 1;    
  365.                 elsif Extension(File_Name.all) = "png" or Extension(File_Name.all) = "jpg" or    
  366.               Extension(File_Name.all) = "jpeg" then
  367.           
  368.                Set(File_Index+1) := new String ' (magenta & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  369.                File_Index := File_Index + 1;
  370.                 elsif Extension(File_Name.all) = "iso" then
  371.                Set(File_Index+1) := new String ' (yellow & base_Name(File_Name.all) & '.' & Extension(File_Name.all));
  372.                File_Index := File_Index + 1;
  373.                 elsif Is_Regular_File(File_Name.all) then
  374.                Set(File_Index+1) := new String ' (white & simple_Name(File_Name.all));
  375.                File_Index := File_Index + 1;
  376.           
  377.                 end if;
  378.              end;
  379.           end loop;
  380.      end if;
  381.      
  382.      --  --
  383.      
  384.      --  --
  385.      
  386.      --  --
  387.      
  388.      if File_Index /= 0 then
  389.           if Long_Option then        
  390.              for I in 1..File_Index loop            
  391.                 if Is_Directory (Element(Target, Integer(I)).all) then        
  392.                declare        
  393.                   Dir : String := Element(Target, integer(I)).all;    
  394.                begin  
  395.                   if Dir /= "." and Dir /= ".." then
  396.                  Start_Search(Dir_Match, Dir, dir);
  397.             
  398.                  Get_Next_Entry(Dir_Match, Dir_Path);    
  399.             
  400.                  Date := Ada.Directories.Modification_time(Dir_Path);    
  401.             
  402.                  Size := Long_Integer(Ada.Directories.Size(Dir_Path));
  403.                   end if;
  404.                exception
  405.                   when others =>
  406.                  null;
  407.                end;
  408.                 else    
  409.                declare        
  410.                   Dir : String := Element(Target, integer(I)).all;    
  411.                begin  
  412.                   if Dir /= "." and Dir /= ".." then
  413.                  Date := Ada.Directories.Modification_time(Full_Name(dir));        
  414.             
  415.                  Size := Long_Integer(Ada.Directories.Size(Full_Name(dir)));  
  416.                   end if;
  417.                end;
  418.                 end if;
  419.           
  420.                 if Line_Cur + Line >= 66 then
  421.                New_Line;
  422.           Put(Position(67, 1) & Formatting.Image(Date));
  423.           Put(Position(67, 20) & Long_Integer'Image(Long_Integer(Size)));
  424.           Put(Position(67, 35) & Set(I).all & Normal);
  425.  
  426.                 else
  427.           Put(Position(Line_Cur + Line, 1) & Formatting.Image(Date));
  428.           Put(Position(Line_Cur + Line, 20) & Long_Integer'Image(Long_Integer(Size)));
  429.           Put(Position(Line_Cur + Line, 35) & Set(I).all & Normal);
  430.           
  431.                Line := Line + 1;    
  432.           
  433.                 end if;
  434.           
  435.           
  436.            Size := 0;
  437.              end loop;        
  438.  
  439.              Line_Cur := Positive'Min(Line_Cur + Line,  67);
  440.              Put(Position(Line_Cur, 1) & white);
  441.           else
  442.              for Iter in 1..File_Index loop
  443.                 if Set(Iter)'Length > Top_Col then
  444.                Top_Col := Set(Iter)'Length;
  445.                 end if;
  446.                 Char_Count := Char_Count + Set(Iter)'Length;
  447.              end loop;
  448.              Line_By_Column := File_index/(240/(Top_Col+4))+1;
  449.           --Line_By_Column :=  (240/Top_Col+4)+1;
  450.              Column_By_Page := File_Index / Line_By_Column+1;
  451.  
  452.              declare
  453.                 Table : File_Table(1..Line_By_Column, 1..Column_By_Page);
  454.              begin
  455.  
  456.           
  457.           
  458.                 for column in Table'Range(2) loop
  459.                for Line in Table'range(1) loop
  460.                   Table(Line, Column) := Set(File_Counter+1);
  461.                   File_Counter := File_Counter+1;
  462.                end loop;
  463.                 end loop;
  464.  
  465.                 File_Counter := 0;
  466.                 Main2 :
  467.                 for Iter_L in Table'range(1) loop
  468.                for Iter_C in Table'Range(2) loop
  469.  
  470.                   if not Gnat.Os_Lib."="(Table(Iter_L, Iter_C), null) then
  471.             Put(Position(Line_Cur + Line + 1 , Col) & Table(Iter_L, Iter_C).all);
  472.             Col := Col + Top_Col;
  473.             File_Counter := File_Counter+1;
  474.             
  475.                   end if;
  476.                   exit Main2 when File_Counter = File_Index;
  477.                end loop;
  478.                if Line_Cur + Line >= 66 then
  479.                   New_Line;
  480.           else
  481.              Line := Line + 1;
  482.                end if;
  483.  
  484.                Col := 1;
  485.                 end loop Main2;
  486.              end;
  487.  
  488.              --  for Iter in 1..File_Index loop
  489.              --     if Set(Iter)'Length > Top_Col then
  490.              --        Top_Col := Set(Iter)'Length;
  491.              --     end if;
  492.           
  493.              --     Put(Position(Line_Cur + Line + 1 , Col) & Set(Iter).all);
  494.              --     if Line >= 66 then
  495.              --          New_Line;
  496.              --     end if;
  497.              --     Line := Line+1;
  498.              --     if Line+1 >= Line_By_Column then
  499.              --        Col := Col + Top_Col;
  500.              --        Line := 1;
  501.              --     end if;
  502.           
  503.              --  end loop;
  504.              Line_Cur := Line_Cur + Line_By_Column+1;
  505.              Col := 1;
  506.              Top_Col := 1;
  507.              Line := 1;
  508.         end if;
  509.     
  510.      end if;  
  511.   end if;
  512.   Put(Position(Line_Cur, 1));
  513.   New_Line;
  514. end Xls;


 
Appel de spawn

Code :
  1. declare
  2.                         Command : Gnat.Command_Line.Command_Line;
  3.                         Cmd : Int_Cmd_Enum := None;
  4.                         Args : Os_Lib.Argument_List_Access := Os_Lib.Argument_String_To_List(Handling.To_String(Text.all));
  5.                         Null_Args : Os_Lib.Argument_List_Access := new Os_Lib.Argument_List(1..0);
  6.                          begin
  7.                         --Errno := System(Handling.To_String(Text.all) & Character'Val(0));
  8.                         Os_Lib.Normalize_Arguments(Args.all);
  9.  
  10.                         if Args'Length > 1 then
  11.                            Put_Line("line : " & Args(2).all);
  12.                            declare
  13.                               Line : String := Get_Line;
  14.                            begin
  15.                               null;
  16.                            end;
  17.                            Os_Lib.Spawn(Os_Lib.Locate_Exec_On_Path(Command_Name(Handling.To_String(Text.all))).all, Args(2..Args'Length), Success);
  18.                         else
  19.                            Os_Lib.Spawn(Os_Lib.Locate_Exec_On_Path(Command_Name(Handling.To_String(Text.all))).all, Null_Args.all, Success);
  20.                         end if;
  21.                          end;


Comande line

Citation :


xls ./*


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2520550
lady287
La lumière fuse
Posté le 19-03-2026 à 11:20:36  profilanswer
 

Malrès tout, la ligne 144 de la commade "xls" n'occure pas.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2520584
lady287
La lumière fuse
Posté le 19-03-2026 à 12:58:31  profilanswer
 

Si vous avez appellé xls vous aurait lu l'appel à get line.
 
J'ai essayé "../" en argument donant l'ffet désiré bien que non prévu. Surpprenant.
 
Une solution consisterait éventuellement en un appel à wilcard_opererator intermédiaire avec pour procéder récursivement.
 
Il serait éventuellement nécessaire alors d'appeller iterator avec une instantance prenant une procédure fairsant appel à wilcard_iterator.


---------------
jovalise (C) 2002 Manuel De Girardi ; web site
n°2520585
lady287
La lumière fuse
Posté le 19-03-2026 à 13:12:37  profilanswer
 

lady287 a écrit :

.../...
 
J'ai essayé "../" en argument donant l'ffet désiré bien que non prévu. Surpprenant.
 


 
Meaculpa ; Le programe tombe donc dans le else.
 
 :heink:  
 
L'argument de la procédure Wilcard_Operator pour * et "../*" doit donc être E & "/*"


---------------
jovalise (C) 2002 Manuel De Girardi ; web site

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  [Ada] Passage du paramètre "../*" et Opération_Iteration

 

Sujets relatifs
[Ada][Gnat] Ada.Directories.Extension(Name : String) return String[Ada] with Gnat.Directory_Operations.Iteration; Wilcard_Iteration
[Ada] Locate_Exec_On_Path et SpawnBatch modifier profil de couleur du parametre d'affichage
Jupyter notebook - inpossible d'enregistrer en *.pyEnvoyer une string comme paramètre dans un XMLHttpRequest (ESP32)
[résolu] Typage fort et valeur null dans paramétre d'une méthode[Ada][Adacore] Problème d'édition de lien avec GPS
[Powershell] Variable objet en paramètre de fonction & ValidateSet 
Plus de sujets relatifs à : [Ada] Passage du paramètre "../*" et Opération_Iteration


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)