Везде написано, что функция filesize возвращает для типизированных файлов количество записей, но у меня она возвращает только количество байт. Вот мой код
Так я создаю файл. Для примера записал в него 2 записи. Теперь использую filesize и она возвращает 48. Вот код
Подскажите, в чем может быть проблема?
| Код |
|---|
program create_files;
{$mode objfpc}{$H+} {$APPTYPE CONSOLE}
uses CRT, FileUtil, SysUtils;
type
manager=record
name:string[18];
comp: integer;
end;
var
company:manager;
fmanager: File of manager; // Файловая переменная
k, n:integer;
begin
AssignFile(fmanager,'File_manager.dat');
if not FileExists('File_manager.dat') then
Rewrite(fmanager)
else
Reset(fmanager);
Seek(fmanager, FileSize('File_manager.dat'));
writeln(UTF8ToConsole('Введите количество менеджеров компании'));
readln(n);
with company do
begin
for k:=1 to n do
begin
writeln(UTF8ToConsole('Введите фамилию'));
readln(name);
writeln(UTF8ToConsole('Введите количество реализованных им компьютеров'));
readln(comp);
Write(fmanager, company); // запись в файл
end;
end;
writeln(UTF8ToConsole('Информация на диск записана'));
CloseFile(fmanager);
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
end.
|
Так я создаю файл. Для примера записал в него 2 записи. Теперь использую filesize и она возвращает 48. Вот код
| Код |
|---|
program manager_computer;
{$mode objfpc}{$H+} {$APPTYPE CONSOLE}
uses crt, FileUtil, SysUtils;
type
manager=record
name:string[18];
comp: integer;
end;
var
company:manager;
fmanager: File of manager; // Файловая переменная
sum, cost, prem, k, n: integer;
sumc, sumv, sump, sum1: integer;
begin
if not FileExists('File_manager.dat') then
begin
writeln(UTF8ToConsole('Файлы не существуют'));
writeln(UTF8ToConsole('Сначала создайте их'));
writeln(UTF8ToConsole('Нажмите любую клавишу'));
readkey;
exit;
end;
AssignFile(fmanager,'File_manager.dat');
Reset(fmanager);
n:= FileSize('File_manager.dat');
writeln('FileSize= ', n);
readkey;
|
Подскажите, в чем может быть проблема?