是否可以读取和写入文件只打开一次?

时间:2013-01-20 19:49:27

标签: pascal freepascal

是否可以仅使用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);

2 个答案:

答案 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”,它允许人们将文本添加到文件的末尾(但不是在中间)。

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