Использование вставки в Аде? - PullRequest
0 голосов
/ 15 июня 2010

Может кто-нибудь сказать, пожалуйста, использование вставки на языке Ada. Я попробовал сеть, но я не мог просто понять. Было бы очень полезно, если бы кто-нибудь мог предоставить мне примеры.

Заранее спасибо Мэдди

1 Ответ

3 голосов
/ 16 июня 2010

Я никогда раньше не использовал Insert (часто не нужно ничего делать, кроме простого Put_Line со строками), поэтому собрал это вместе:

with Ada.Strings.Fixed;
with Ada.Text_IO; use Ada.Text_IO;
procedure Inserting is
   Base : constant String := (1 .. 8 => ' ') & "aaaaaaaa" & (1 .. 8 => ' ');
begin
   Put_Line (ASCII.HT & '|' & Base & '|');
   for J in 1 .. 24 loop
      declare
         S : String := Base;
      begin
         Ada.Strings.Fixed.Insert (S,
                                   Before => J,
                                   New_Item => "ccc");
         Put_Line (Integer'Image (J) & ASCII.HT & '|' & S & '|');
      end;
   end loop;
end Inserting;

и вывод

       |        aaaaaaaa        |
 1     |ccc        aaaaaaaa     |
 2     | ccc       aaaaaaaa     |
 3     |  ccc      aaaaaaaa     |
 4     |   ccc     aaaaaaaa     |
 5     |    ccc    aaaaaaaa     |
 6     |     ccc   aaaaaaaa     |
 7     |      ccc  aaaaaaaa     |
 8     |       ccc aaaaaaaa     |
 9     |        cccaaaaaaaa     |
 10    |        acccaaaaaaa     |
 11    |        aacccaaaaaa     |
 12    |        aaacccaaaaa     |
 13    |        aaaacccaaaa     |
 14    |        aaaaacccaaa     |
 15    |        aaaaaacccaa     |
 16    |        aaaaaaaccca     |
 17    |        aaaaaaaaccc     |
 18    |        aaaaaaaa ccc    |
 19    |        aaaaaaaa  ccc   |
 20    |        aaaaaaaa   ccc  |
 21    |        aaaaaaaa    ccc |
 22    |        aaaaaaaa     ccc|

raised ADA.STRINGS.LENGTH_ERROR : a-strfix.adb:358

который, я надеюсь, дает общий вкус.

Ada95AARM A.4.3 в http://www.adaic.com/standards/95aarm/html/AA-A-4-3.html (3) рассказывает о концепциях, стоящих за этим.

...