well why not make it a global variable in that unit's implementation? implementation var f:text .... .....
then have a separate function to close the file. On 16 May 2011, at 01:28, John Lee <johnel...@gmail.com> wrote: > I'd like to put the assign and reset of a text file into a function, and then > use the function to return a line from the file, without needing to close the > file then re assign and reset every time (for performance reasons) - see > below for my attempt. > > This doesn't work because I guess the file handles etc are local to the > function are volatile, so cannot be accessed in the main program Is there a > simple way to fix this ie to make this function work. Of course one can const > in a function to make normal variables non volatile...but files etc? > > TIA for any ideas...John > > main program... > get_line('tmp.tmp,0), to assign and reset; > > {get lines} > str1:=get_line('tmp.tmp,1); > str2:=get_line('tmp.tmp,1) > .... > {close) > get_line('tmp.tmp,2) > > assume function is defined as > function get_line( fname;string;flag:longint):string; > var f:text > begin > if flag=0 then > begin > assign(f,fname); > reset(f); > end; > if flag=1 then > while not eof(f) do > begin > readln(f); > end; > > if flag=2 then close(f); > get_line;=f; > end; > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal