У меня возникла проблема с записью строковой переменной в файл.
Проблема в том, что я должен указать точную длину этой строки. В противном случае выходной файл будет просто содержать некоторые значения записок. Интересно, можно ли это как-то решить без необходимости указывать длину строки перед раздачей?
Я знаю, что моя Get()
процедура хранит длину этой переменной, и я просто мог вернуть ее в основную программу. Однако я хочу написать свою программу, чтобы она сначала выполняла все операции чтения из входного файла, прежде чем начать запись в выходной файл.
with Ada.Text_Io, Ada.Integer_Text_Io;
use Ada.Text_Io,Ada.Integer_Text_Io;
procedure Uppgift is
type Bil_Register is
record
Namn : String(1..50);
Adress : String(1..50);
Post : String(1..50);
Reg : String(1..6);
end record;
Infil : File_Type;
Utfil : File_Type;
L, I : Integer;
Br : Bil_Register;
procedure Get(F : in out File_Type; Br : out Bil_Register) is
Length : Integer;
begin
Get_Line(F, Br.Namn, Length);
end;
begin
Open(Infil, In_File, "register.txt");
Create(Utfil, Out_File, "test.txt");
Get(Infil, Br);
Put_Line(Utfil, Br.Namn);
Close(Infil);
Close(Utfil);
end Uppgift;
-
РЕДАКТИРОВАТЬ (2011.08.20)
Кажется, это проблема только для ОС на базе Unix. При использовании Windows вам не обязательно быть абсолютным с размером строки, когда вы печатаете ее в файл или на экран