Ты выглядишь, как будто у тебя есть все части. Вы можете использовать Text_IO для записи в файл, и вы можете использовать Unbounded_String для хранения строк любого размера. Для чтения строк любого размера вы можете использовать процедуру Get_Line в Text_IO, которая возвращает строку любой длины, или, если вы действительно хотите использовать Unbounded_Strings, вы можете использовать Ada.Text_IO.Unbounded_IO. Get_Line . Я также мог бы дополнительно предложить посмотреть Indefinite_Doubly_Linked_List вместо использования Unbounded_String, в зависимости от вашего варианта использования.
Для записи в файл просто l oop над списком и запись каждого элемента в файл с использованием функций стиля Text_IO.
Вот некоторые леса, показывающие некоторые из них.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Containers.Indefinite_Doubly_Linked_Lists;
use Ada.Containers;
procedure Hello is
package Lists is new Indefinite_Doubly_Linked_Lists(String);
Text : Lists.List;
begin
Put_Line("Hello, world!");
Put_Line("Enter a text:" );
declare
User_Input : String := Get_Line;
begin
Text.Append(New_Item => User_Input);
end;
Put_Line("Enter Text to Insert at:");
declare
Location : String := Get_Line;
begin
Put_Line("Enter New Text:");
declare
User_Input : String := Get_Line;
begin
Text.Insert(Before => Text.Find(Location), New_Item => User_Input);
end;
end;
-- Loop through list and write each element
for Line of Text loop
Put_Line(Line);
-- Write to file here using Text_IO file operations
end loop;
end Hello;
Примечание: если вы тратите больше времени на поиск данных, чем на создание своего списка, вы также можете посмотреть на пакеты Map. У Ады есть хэшированные и упорядоченные карты (также с неопределенными опциями).