[fpc-pascal] accessing files from a function

Rainer Stratmann RainerStratmann at t-online.de
Mon May 16 11:35:57 CEST 2011


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;





More information about the fpc-pascal mailing list