home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / ada / 2411 < prev    next >
Encoding:
Text File  |  1992-08-23  |  2.1 KB  |  61 lines

  1. Newsgroups: comp.lang.ada
  2. Path: sparky!uunet!jeol!jam
  3. From: jam@jeol.com
  4. Subject: Re: ADA question
  5. Message-ID: <jam.714606087@jeol>
  6. Keywords: Strings, Packages
  7. Organization: JEOL USA, Inc.
  8. References: <1992Aug23.102056.19487@alf.uib.no>
  9. Date: Sun, 23 Aug 1992 21:41:27 GMT
  10. Lines: 49
  11.  
  12. In <1992Aug23.102056.19487@alf.uib.no> sahni@eik.ii.uib.no (Sahni Daljeet Singh) writes:
  13.  
  14. >I am beginning to learn Ada and am stuck at a point. The question is as
  15. >follows:
  16.  
  17. >I have a function in a package A which returns string. I am using
  18. >that function in another package B and try to give the value returned
  19. >by that function to a variable (which has been declared in package B).
  20. >The variable is of type string (1 .. max) initialised to empty string.
  21. >My program simple raises an exception. 
  22. >Could it be that the array size is different for the variable and the value
  23. >returned by the function. The function can return a string of different
  24. >sizes. Can somebody give help me out?
  25.  
  26. You are correct, the strings must be of the same size...  There are
  27. various ways that you can solve this problem.  For example :
  28.  
  29. o.  Make a subtype that the function returns and the variable can be 
  30.     declared with.
  31.     subtype MY_STRING is STRING(1..max);
  32.     ...
  33.     x : MY_STRING;
  34.     ...
  35.     x := the_func( whatever );
  36.     ...
  37. o.  Make a function/procedure which the result of the first function is 
  38.     passed to and then deal with the result.
  39.     procedure MY_PROC( value : STRING ) is
  40.     begin
  41.         -- do something with value
  42.         -- 'first, 'last, 'range, 'length will all work on value.
  43.     end MY_PROC;
  44.     ....
  45.     my_proc( my_func( whatever ) );
  46.     ...
  47. o.  Change the function to a procedure which then returns the size to the
  48.     user.
  49. o.  It you need variable length strings, look in the library for a VSTRINGS
  50.     package that might make the problem a lot easier.  VERDIX supplies
  51.     one.  Basically a record containing a string and a length, often times
  52.     dynamic to allow for widely sized strings.  
  53.  
  54. Good luck, If none of these help then define your problem more exactly.
  55.  
  56. -- 
  57.  
  58.                 John Malcolmson      
  59.                 (malcolmson@jeol.com)
  60.                         
  61.