0

你好,帕斯卡大师!我有一个自定义记录的文件类型:

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;

问题是,实际上没有任何东西写入文件。我究竟做错了什么?

4

2 回答 2

2

It's been a long time since I've done any Pascal, but IIRC Rewrite truncates the file. You should use Append.

You don't need the Rewrite() after inserting a record in the file:

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

If you don't want to truncate the file every time you open it:

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

    append(F);

    FOpened:=true;
end;
于 2011-05-11T00:34:46.277 回答
1

问题是 InsN 中的“重写”调用。'Rewrite' 创建一个新文件,所以通过在程序结束时调用它,你正在创建一个新的空文件!

于 2011-07-25T12:43:24.740 回答