- Код: Выделить всё
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.
Так я создаю файл. Для примера создаю предыдущей программой файл с двумя записями.
Теперь пытаюсь с ним работать.
Total Commander показывает размер файла 48 байт и функция FileSize тоже возвращает 48, хотя должна была возвратить число 2. Фрагмент кода:
- Код: Выделить всё
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;
Что здесь я неправильно делаю?
Подскажите, пожалуйста, а то скоро сессия.