home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!paladin.american.edu!gatech!prism!gt1827a
- From: gt1827a@prism.gatech.EDU (david daniell)
- Newsgroups: comp.lang.ada
- Subject: TEXT_IO.FILE_TYPE passing
- Message-ID: <66292@hydra.gatech.EDU>
- Date: 18 Aug 92 16:55:48 GMT
- Organization: Georgia Institute of Technology
- Lines: 49
-
- First, thanks to everybody who responded to my question about an Ada
- interrupt handler.
-
- My question now:
- I am writing a simple procedure/function to open or create a file,
- depending upon a parameter passed to it of type FILE_MODE. Here's
- a simplified listing of what I have written:
-
- function OPEN_OR_CREATE_FILE (THE_MODE : FILE_MODE := IN_FILE)
- return FILE_TYPE is
- THE_FILE : FILE_TYPE;
- FILE_NAME : STRING (80);
- INDEX : NATURAL := 0;
- begin
- PUT ("Input file name: ");
- GET_LINE (ITEM => FILE_NAME,
- LAST => INDEX);
- if THE_MODE = IN_FILE then
- OPEN (FILE => THE_FILE,
- MODE => IN_FILE,
- NAME => FILE_NAME (1 .. INDEX));
- else
- CREATE (FILE => THE_FILE,
- MODE => OUT_FILE,
- NAME => FILE_NAME (1 .. INDEX));
- end if;
- return THE_FILE;
- end OPEN_OR_CREATE_FILE;
-
- This compiles fine, but when I go to use it:
- INPUT_FILE := OPEN_OR_CREATE_FILE (THE_MODE => IN_FILE);
- I get a compiler error stating that INPUT_FILE is not valid in an assignment
- statement. It was declared as type FILE_TYPE.
-
- I had similar troubles when I tried to make OPEN_OR_CREATE_FILE a procedure
- with a parameter `THE_FILE : out FILE_TYPE'. I'm fairly certain that this
- is because FILE_TYPE is limited private, but how can I get around this?
- Should THE_FILE be a global variable? I don't want to have to OPEN/CREATE
- a file in my main procedure, if possible, so how can I pass a variable of
- type FILE_TYPE back to the main procedure?
-
- I know this was sort of long and boring, but thanks in advance for any help
- or advice.
-
- --
- David Daniell
- Georgia Institute of Technology, Atlanta Georgia, 30332
- uucp: ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt1827a
- Internet: gt1827a@prism.gatech.edu
-