LINUX.ORG.RU

[Ada] Почему разные результаты?

 


0

1

Так:

with Ada.Text_IO;
use Ada.Text_IO;
	
procedure sample is
	type myrecord is 
	record
		Field1 : String(1..10);
		Field2 : Integer;
	end record;
	thisrecord : myrecord;
	begin
	thisrecord.Field1:="Apologies ";
	thisrecord.Field2:=23;
	Put(thisrecord.Field1);
	Put(Integer'Image(thisrecord.Field2));
end sample;

>gnatmake sample.adb
>Apologies  23

А так:
with Ada.Text_IO;
use Ada.Text_IO;
	
procedure sample is
	type myrecord is 
	record
		Field1 : String(1..10);
		Field2 : Integer;
	end record;
	thisrecord : myrecord;
	SField2 : String := Integer'Image(thisrecord.Field2);
	begin
	thisrecord.Field1:="Apologies ";
	thisrecord.Field2:=23;
	Put(thisrecord.Field1);
	Put(SField2);
end sample;
>Apologies  134514620

★★★★★

Ответ на: комментарий от anonymous

я ожидал ошибку, компилятор это съел.

splinter ★★★★★
() автор топика
Ответ на: комментарий от anonymous

а можно ли как то исправить второй вариант, что бы переменная инициализировалась в теле процедуры, но описание и перевод в стринг были на этапе элаборации? Или такой подход в корне не верный?

splinter ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.