[fpc-pascal]Problems with FileIO
anton.tichawa at chello.at
Wed Nov 6 18:42:56 CET 2002
yes, please send your source code.
On Wednesday 06 November 2002 18:20, Eduardo Morras wrote:
> Thanks for your reply, but the runtime error 100 still appear, and i don't
> get the hoped output filesize, it must be 4921 bytes (68*64+68*8+1*8+17*1)
> i get 4968 bytes (69*64+69*8); so the last blockwrite
> writes the entire Entrada^ array (64 bytes) and not BytesLeidos bytes (17
> in this case)... so perhaps BlockRead doesn´t change the Result value...
> don´t know. More clues:?
> Also, adding Result to BlockWrite makes no change, run error 100 is there.
> I can make public all my code (near 170 lines) if needed.
> >The blockread function has the declaration:
> >Procedure Blockread (Var F : File; Var Buffer; Var Count : Longint [; var
> >Result : Longint]);
> >If the "Result" parameter is not specified, as is the case in your
> > program, an error is generated when there are less than Count bytes
> > available in the input file.
> >With the "Result" parameter, no error is generated, and "Result" returns
> > the number of bytes actually read from the file.
> >Try to change your code to:
> > bla bla
> > var
> > BytesRead: Longint;
> > Repeat
> > BytesLeidos := 64;
> > blockread(FileIn,Entrada^,BytesLeidos, BytesRead);
> > if BytesRead > 0 then begin
> > bla bla
> > > I'm new to fpc and i'm trying to port some mac pascal code to
> > > win32 console. I have this code to read 64 bytes of data from a file,
> > > work with them and save a double and 64 bytes of data. Of course if
> > > blockread reads f.e. 32 bytes it saves the double and 32 bytes. But
> > > when i want to check the output file size is different from the
> > > expected. So i have an input file of 4369 bytes, with 68 blocks of 64
> > > bytes plus a block of 17 bytes (4369-64*68), the output file size must
> > > be 68 * 8 + 68 * 64 + 1 * 8 + 1 * 17 = 4921 bytes. But i get 4896,
> > > which are 25 bytes less (25 bytes = 8(from double)+17(the last block
> > > size)). So, the program don't treat the last data block. The debugger
> > > says error 100 (FileIO problem), but what can i do make it work for?
> #The Unix Guru's View of Sex unzip ; strip ; touch ; grep ; finger ; mount
> ; fsck ; more ; yes ; umount ; sleep
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
More information about the fpc-pascal