2

1つのassign()だけを使用してファイルの読み取りと書き込みを行うことはできますか?

私は次のような意味です:

assign(fl, 'file.txt');
reset(fl) 
// I know, that when I use reset - I have only read permission, 
// but is there any other option to read and write opening the file only once?
read(fl, variable);
write(fl, 'asdf);
close(fl);
4

2 に答える 2

4

Reset読み取りアクセスのみを許可するわけではありません。FileMode = 2少なくとも Delphi の Pascal では、デフォルトは読み取り/書き込み ( ) であり、FP はそれとかなり互換性があります。

のヘルプトピックからFileMode強調鉱山):

Reset プロシージャによって開かれた型付きおよび型なしファイルのアクセス モードを示します。

Delphi コードでは、FileMode は、型付きファイルと型なしファイル(テキスト ファイルではない)が Reset プロシージャを使用して開かれるときに使用するアクセス モードを決定します。

FileMode 変数に割り当てることができるファイル オープン モードは、System.SysUtils の定数リストで定義されています。デフォルトの FileMode は 2 (読み取り/書き込みアクセス) です。FileMode に別の値を割り当てると、その後のすべてのリセットでそのモードが使用されます。

于 2013-01-20T22:03:03.380 に答える
0

あなたの質問は一般的なものだったので、ファイルに保存されるデータの種類については言及していませんでした。ファイルを「TRecord のファイル」として定義する場合 (最初にレコード タイプを定義する必要があります)、まずファイルを「リセット」して開きます。その後、定義済みのプロシージャ 'seek' を使用してファイル内の特定のレコードを検索し、データを TRecord 型のローカル変数に読み込み、そのレコードを変更してファイルに書き戻すことができます。ファイルの現在の場所は、今読み取ったレコードの場所になります。

テキスト ファイルの読み取りと書き込みは、よりトリッキーです。定義済みのプロシージャ 'append' が存在し、ファイルの末尾にテキストを追加できます (ただし、途中には追加できません)。

30 年前、私は独自のデータベースを作成するためにそのようなシステムを使用していました。幸いなことに、データベース プログラミングは今でははるかに簡単になっています。

于 2013-01-21T06:39:13.160 に答える