home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / ada / 2379 < prev    next >
Encoding:
Internet Message Format  |  1992-08-18  |  2.1 KB

  1. Path: sparky!uunet!paladin.american.edu!gatech!prism!gt1827a
  2. From: gt1827a@prism.gatech.EDU (david daniell)
  3. Newsgroups: comp.lang.ada
  4. Subject: TEXT_IO.FILE_TYPE passing
  5. Message-ID: <66292@hydra.gatech.EDU>
  6. Date: 18 Aug 92 16:55:48 GMT
  7. Organization: Georgia Institute of Technology
  8. Lines: 49
  9.  
  10. First, thanks to everybody who responded to my question about an Ada
  11. interrupt handler.  
  12.  
  13. My question now:
  14. I am writing a simple procedure/function to open or create a file,
  15. depending upon a parameter passed to it of type FILE_MODE.  Here's 
  16. a simplified listing of what I have written:
  17.  
  18.    function OPEN_OR_CREATE_FILE (THE_MODE : FILE_MODE := IN_FILE)
  19.              return FILE_TYPE is
  20.       THE_FILE  : FILE_TYPE;
  21.       FILE_NAME : STRING (80);
  22.       INDEX     : NATURAL := 0;
  23.       begin
  24.          PUT ("Input file name:  ");
  25.          GET_LINE (ITEM => FILE_NAME,
  26.                    LAST => INDEX);
  27.          if THE_MODE = IN_FILE then
  28.             OPEN (FILE => THE_FILE,
  29.                   MODE => IN_FILE,
  30.                   NAME => FILE_NAME (1 .. INDEX));
  31.          else
  32.             CREATE (FILE => THE_FILE,
  33.                     MODE => OUT_FILE,
  34.                     NAME => FILE_NAME (1 .. INDEX));
  35.          end if;
  36.          return THE_FILE;
  37.       end OPEN_OR_CREATE_FILE;
  38.  
  39. This compiles fine, but when I go to use it:
  40.       INPUT_FILE := OPEN_OR_CREATE_FILE (THE_MODE => IN_FILE);
  41. I get a compiler error stating that INPUT_FILE is not valid in an assignment
  42. statement.  It was declared as type FILE_TYPE.  
  43.  
  44. I had similar troubles when I tried to make OPEN_OR_CREATE_FILE a procedure
  45. with a parameter `THE_FILE : out FILE_TYPE'.  I'm fairly certain that this 
  46. is because FILE_TYPE is limited private, but how can I get around this?  
  47. Should THE_FILE be a global variable?  I don't want to have to OPEN/CREATE
  48. a file in my main procedure, if possible, so how can I pass a variable of
  49. type FILE_TYPE back to the main procedure?
  50.  
  51. I know this was sort of long and boring, but thanks in advance for any help
  52. or advice.
  53.  
  54. -- 
  55. David Daniell
  56. Georgia Institute of Technology, Atlanta Georgia, 30332
  57. uucp:      ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt1827a
  58. Internet: gt1827a@prism.gatech.edu
  59.