In my eyes it is (very) unlogic. Why don't you make 3 functions? Something like this...
var filename : string; // global var for storing the filename function file_reset( name : string ) : boolean; function file_read( var eof : boolean ) : string; function file_close : boolean; Whith your example you don't have to pass the filename for operation 1 (flag=1). Rainer Am Monday 16 May 2011 02:28:14 schrieb John Lee: > 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