"Robert I. Eachus" wrote in message news:3F8CB712.2070808@comcast.net... > Antonio Mart�nez wrote: > > > I'm trying to pass to a function an argument. The argument is an > > array range <> of Strings (unbounded array). > > > number of string literals is unknown by the function. And the > > length of every string is unknown as well. > > > How do I work with unbound strings? > > You can create an array of Unbounded_String (found in > Ada.Strings.Unbounded). Or you can use the package below. Note that in > either case, you are going to have to create an array object, put the > strings in it, and then pass that to the array. With the package below > your example above: > Hmm.. Robert, I am not sure why you would have to create the array and then put the strings in it then pass the array (ok, I agree that is what is really going to happen...but you can hide it) with Ada.Strings.Unbounded; with Text_IO; procedure AnotherWay is function "-"(Item : in String) return Ada.Strings.Unbounded.Unbounded_String renames Ada.Strings.Unbounded.To_Unbounded_String; function "-"(Item : in Ada.Strings.Unbounded.Unbounded_String) return String renames Ada.Strings.Unbounded.To_String; type Unbounded_String_Array is array (Integer range <>) of Ada.Strings.Unbounded.Unbounded_String; procedure Something (Data : in Unbounded_String_Array) is begin for I in Data'range loop Text_IO.Put_Line(-Data(I)); end loop; end Something; begin Something((-"Hello", -", I'm", -" the function")); end AnotherWay; Now, having said and done this....I agree with Robert that this is not a normal Ada idiom so the original poster should really think about whether or not you want to do this. While the code I provided above will actually work, it is really a bad idea so if you can look at your problem space in a different manner, I would really recommend against doing this. Also one more note, the original post talked about writing a function to do something but the example (in the original post) was actually a procedure.