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强调我的)的帮助主题:

指示重置过程打开的类型和非类型文件的访问模式。

在 Delphi 代码中,FileMode 确定使用 Reset 过程打开有类型和无类型文件(不是文本文件)时使用的访问模式。

可以分配给 FileMode 变量的文件打开模式在 System.SysUtils 的常量列表中定义。默认的 FileMode 是 2(读/写访问)。为 FileMode 分配另一个值会导致所有后续重置使用该模式。

于 2013-01-20T22:03:03.380 回答
0

由于您的问题很笼统,因此您没有说明文件中将存储哪种数据。如果您将文件定义为“TRecord 文件”(您必须先定义您的记录类型),那么首先您“重置”文件以打开它;之后,您可以使用预定义的过程“seek”在文件中查找特定记录,将数据读入 TRecord 类型的局部变量,更改该记录,然后将其写回文件。文件的当前位置将是您刚刚阅读的记录的位置。

读取和写入文本文件更加棘手 - 存在预定义的过程“附加”,它允许将文本添加到文件的末尾(但不在中间)。

三十年前,我曾经使用这样的系统来创建自己的数据库;幸运的是,现在数据库编程要简单得多。

于 2013-01-21T06:39:13.160 回答