[fpc-pascal]blockread in a procedure

David Emerson dle3ab at angelbase.com
Sun Feb 29 09:24:54 CET 2004


Hi there,

I'm having trouble using blockread. It was working for... oh, a year... and all of a sudden it's not working. I'm getting a runtime error 87 in win32/i386 (fpc 1.0.10) and an error 217 in linux/i386 (fpc 1.0.6). Since I always compile with -gl it tells me it's failing right at blockread. Here's the code...


const
  test_file_name = 'test.txt';
  the_source : ansistring = '';

procedure read_source_file;

  const
    bufsize = 2048;
  var
    source_file : file;
    buf : array [1..bufsize] of char;
    count_read : longint;   // longint required by blockread

  begin

    write ('Reading source file.....');
    assign (source_file, test_file_name);
    reset (source_file);
    the_source := '';
    repeat
      blockread (source_file, buf, bufsize, count_read);
      the_source := the_source + copy (buf, 1, count_read);
      until count_read = 0;
    close (source_file);
    the_source := the_source + chr(255);
    writeln ('Source file successfully read');

  end;

begin
  read_source_file;
end.


If I get rid of the procedure read_source_file and put its code directly into the main "begin end." then it works. So for some reason, suddenly it can't stand having blockread inside a procedure. I haven't touched the procedure or any of the constants/variables associated with it in a long time, so it's bizarre that it suddenly decided to fail.


Incidentally, fpc 1.0.10 rpm failed to install on redhat. I struggled with it for a good hour. Any tips? Does the gz work better than the rpm?


Cheers,
David 






More information about the fpc-pascal mailing list