Re: New to Ada, noticing something strange.



mike.martelli@xxxxxxxxx wrote:

As for indexing the
string by 1, assume it is always of length 1 (i have a function that
make sure of it) - i know i can use a chracter but I left it like this
for now.

Note that a length of 1 and and index of 1 are 2 different things:

A : String (3 .. 3);

A'Length = 1, A'First = A'Last = 3; 1 is an invalid index for A

B : String (1 .. 9);

Put_Line (Item => B (4 .. 4) );

Passing a slice of length 1. Item'Length = 1, Item'First = Item'Last = 4; 1 is an invalid index.

		function AddDigits(charOp1, charOp2: Character) return Character is
		begin
			charDigit := Convert2Character(Integer'Image(charMap(charOp1) +
charMap(charOp2) + carry));

If you call this with Charop1 => '9' and Charop2 => '9', your sum is 18. Integer'Image of that is " 18" (note the leading space), which is not of length 1 (its lower index is 1, though). Convert2character should return ' '. I suspect you have a logic error here.


I am using the GNAT compilier, I do not know what version.  It is on my
schools server (NYU).

I see. When asking for help with homework, it's a good idea to make it clear that that's what you're doing. "gnatmake -v" should print the version; it also helps to know what platform you're running on. If you determine this is a compiler error, then you should probably report it to whoever administers the compiler on your system.


--
Jeff Carter
"There's no messiah here. There's a mess all right, but no messiah."
Monty Python's Life of Brian
84
.