ADA : positive tömb konvertálása stringé

Üdv!
A kérdés hogyan lehet egy positive tömböt egyetlen stringé konvertálni függvény segítségével.
Itt a kód hátha jobban látszik mit szeretnék elérni:


type Index is new Positive;

type Permutation is array (Index range <>) of Natural;

function Image(P: Permutation) return String is
result:String:="(";
begin
	for I in P'Range loop
	  result:=result & Positive'Image(P(I));   ----Ez a 147. sor
          if I= P'last then 
		result:=result & ")";
		else
		result:=result & ",";
	  end if;
	end loop;
return result;
end;

(a futás idehű hiba: raised CONSTRAINT_ERROR : permutation_pack.adb:147 length check failed)

Előre is köszönöm a segítségeket...

Hozzászólások

Régen volt Ada és tévedhetek. Szerintem a result egy 1 hosszú string lesz:

result: String := "(";

Nem növekszik automatikusan, így az első konkatenálásnál elszáll.

KisKresz

1. dynamic_string
2. Vagy kétszer mész végig a cikluson, először meghatározod, mekkora lesz az eredmény, lefoglalod a megfelelő méretű stringet és újra a ciklus... hát nem egy szép megoldás. :-)

Szerk.: annak van oka, hogy positive'image-t használsz natural helyett?

KisKresz