On Sun, 29 Feb 2004, David Emerson wrote:
> 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... > I tested some things with the current compiler. The error occurs there as well. It's a stack problem. If you move the 'buf' definition out of the procedure, I.e. define it as a global var, it works fine. Assuming you don't want to use a global variable (bad programming practice), you can also try the following, which works fine as well: (ansistrings are allocated on the heap, bypassing the stack); Michael. program testb; const test_file_name = 'test.txt'; the_source : ansistring = ''; const bufsize = 2048; procedure read_source_file; var source_file : file; count_read : longint; // longint required by blockread Buf : AnsiString; begin SetLength(Buf,BufSize); write ('Reading source file.....'); assign (source_file, test_file_name); reset (source_file); the_source := ''; repeat blockread (source_file, buf[1], 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. _______________________________________________ fpc-pascal maillist - [EMAIL PROTECTED] http://lists.freepascal.org/mailman/listinfo/fpc-pascal