If a file variable links to a typed file (ie f : file of TCardRecord), then the position and size functions work on record numbers.

So, from that I'd say you have 2047 records in your card list.

If you then use Seek(0) (IIRC) you will end up at record 0... the start of the file. Seek(2046) will take you to the last record in the file and Seek(2047) will take you past the end of the file ready to write another record.

To get the file size in bytes, you must connect to it with a file of byte or textfile.