On Thu, 2 Nov 1995, Mauro Ottaviani wrote:
Hello, I have a problem using files with gpc: In Turbo Pascal I usually use the following: var f:text; begin assign(f,'filename'); reset(f); ... close(f); But this doesn't work with gpc !! I tryed: reset(f,'filename'); This time it also compiled OK, but gives a runtime error !! Please HELP me !
In ISO Pascal, you have to specify any external files accessed by your program in the Program header. For example:
Program Demo1 (InFile, OutFile);
Var InFile, OutFile : Text;
Begin Reset (InFile); Rewrite (OutFile); End {Demo1}.
'Tho ISO Pascal has no provisions for specifying a filename for the external files, most Pascal implementations allow you to do so via the Reset/Rewrite commands. GPC is one of these Pascal implementations. So, modifying the above program to open the files "INDATA" for input and "OUTDATA" for output:
Program Demo2 (InFile, OutFile);
Var InFile, OutFile : Text;
Begin Reset (InFile, './INDATA'); Rewrite (OutFile, './OUTDATA'); End {Demo2}.
In ISO Pascal, files are automatically closed when the program terminates, therefore there is no "Close" command. Some Pascal implementations, like Borland, do have a "Close" command. I don't know if GPC has one or not.
Also, the files "Input" and "Output" are special files used for standard input and standard output respectivly. So to use Read/Readln and Write/Writeln to get input from the keyboard and to display something on the screen, you have to put a "Input, Output" in your program header.
A little different from Borland, I know. But actually, if you think about it, it's a little better to specify what external files are used in the Program header. That way you know exactly what files are gonna be opened by just looking at the Program header. I didn't like it at first, but now I think it's not a bad idea.
Arcadio