是否可以仅使用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);
答案 0 :(得分:4)
Reset
不会只为您提供读取权限;默认是读/写(FileMode = 2
),至少在Delphi的Pascal中,FP与它非常兼容。
来自FileMode
的帮助主题(强调我的):
表示由Reset过程打开的类型和非类型文件的访问模式。
在Delphi代码中,FileMode确定在使用“重置”过程打开键入的和非类型化的文件(而不是文本文件)时要使用的访问模式。
可以分配给FileMode变量的文件打开模式在System.SysUtils的Constants列表中定义。 默认FileMode为2(读/写访问)。为FileMode分配另一个值会导致所有后续重置都使用该模式。
答案 1 :(得分:0)
由于您的问题很笼统,您没有说明文件中将存储哪种数据。如果您将文件定义为“TRecord文件”(您必须先定义您的记录类型),那么首先“重置”该文件以将其打开;之后,您可以使用预定义的过程'seek'来查找文件中的特定记录,将数据读入TRecord类型的局部变量,更改该记录然后将其写回文件。文件的当前位置将是您刚读过的记录的位置。
读取和写入文本文件比较棘手 - 存在预定义的程序“append”,它允许人们将文本添加到文件的末尾(但不是在中间)。
三十年前,我曾经使用过这样的系统来创建自己的数据库;幸运的是,数据库编程现在要简单得多。