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

Pascalを実行してから長い時間が経ちましたが、IIRCRewriteはファイルを切り捨てます。を使用する必要があります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;
于 2011-05-11T00:34:46.277 に答える
1

問題は、InsNでの「書き換え」呼び出しです。「リライト」は新しいファイルを作成するので、プログラムの最後にそれを呼び出すことによって、新しい空のファイルを作成しています!

于 2011-07-25T12:43:24.740 に答える