Паскаль - не записывает в файл - PullRequest
0 голосов
/ 11 мая 2011

Привет, Мастера Паскаля!У меня есть тип файла пользовательских записей:

DBCell = record
    Name: string[10];
    Surname: string[15];
    Balance:integer;
    OpenDate: record
        year: integer;
        month: 1..12;
        day:1..31
    end;
    AccountN: string[10];
end;
DBFile = file of DBCell;

И функции, которые открывают и добавляют новый элемент в файл:

procedure Fopenf(var F:DBFile; var FName:string; var FOpened:boolean);
begin
    Assign(F,FName);

    rewrite(F);

    FOpened:=true;
end;

procedure InsN(var F:DBFile;var cell:DBCell;var FOpened:boolean);
begin
        Write(F,cell);
        Close(F);
        Rewrite(F);
        Writeln('Added');
        FOpened:=false;
end;

Проблема в том, что на самом деле ничего не записывается в файл,Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Прошло много времени с тех пор, как я сделал любой Паскаль, но IIRC Rewrite усекает файл.Вы должны использовать Append.

Вам не нужно Rewrite() после вставки записи в файл:

procedure InsN(var F:DBFile;var cell:DBCell;var FOpened:boolean);
begin
    Write(F,cell);
    Close(F);
    Writeln('Added');
    FOpened:=false;
end;

Если вы не хотите обрезать файл каждый разраз вы открываете его:

procedure Fopenf(var F:DBFile; var FName:string; var FOpened:boolean);
begin
    Assign(F,FName);

    append(F);

    FOpened:=true;
end;
1 голос
/ 25 июля 2011

Проблема заключается в вызове rewrite в InsN. «Перезаписать» создает новый файл, поэтому, вызывая его в конце вашей программы, вы создаете новый пустой файл!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...