[fpc-pascal]Problems with FileIO
Eduardo Morras
nec556 at ave128.retena.es
Wed Nov 6 00:46:11 CET 2002
Hello everyone:
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?
cuant : Pointer to array[0..63] of byte;
Repeat
BytesLeidos := 64;
blockread(FileIn,Entrada^,BytesLeidos);
if BytesLeidos>0 then begin
AjustarBloque(BytesLeidos-1); //Substrac
1 for 0-based array bounds
CuantificarBloque(BytesLeidos-1); //Substrac 1
for 0-based array bounds
blockwrite(FileOut,factor,sizeof(double));
blockwrite(FileOut,cuant^,BytesLeidos*sizeof(byte));
end;
Until (EOF(FileIn)) OR (BytesLeidos=0);
TIA
La diferencia entre la teoria y la practica es que en teoria no hay, pero
en la practica si
More information about the fpc-pascal
mailing list