On Sun, 14 Oct 2018, Bo Berglund wrote:
It seems like I cannot use Append() on a file of byte.
Neither is it allowed to use SeekEOF() on that file type...
I want to log binary data to a logfile and therefore I need to open it
for writing with record size =1 and the file pointer at the eof
location.
But all of the useful functions seem only to work with text files.
What do I use to append binary data to an existing binary file?
This throws an error at SeekEof:
AssignFile(F, FileName);
if AppendToFile then
SeekEof(F)
else
Rewrite(F,1);
BlockWrite(F, Buf[0], Length(Buf));
CloseFile(F);
Was the Seek() function punished by you ? :)
https://www.freepascal.org/docs-html/rtl/system/seek.html
Additionally, you must always open the file usng reset or rewrite.
SeekEOF (or Seek) when you didn't open the file first, is wrong.
For appending to an existing untyped file, you must call reset(), then call
Seek.
You can set filemode to influence how reset() opens the file for binary
files. Normally it is opened read-write..
https://www.freepascal.org/docs-html/rtl/system/filemode.html
Using reset may seem as a bit illogical, but this is an old TP-era inheritance.
In general, I would recommend using streams for binary IO.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal