我正在设计一个程序,该程序可将数据写入文本文件并将其存储在文本文件中。问题是,每当我在文件中输入新数据时,旧数据就会被清除,并且只有一个条目(行)在那里。我最初是每次都说Rewrite(tFile),但现在使用布尔值来检查文本文件是否已被重写。我仍然遇到同样的问题。
begin
AssignFile(tNotifications, 'Notifications.txt');
if bRewritten = False then
begin
Rewrite(tNotifications);
bRewritten := True;
end;
Writeln('test');
CloseFile(tNotifications);
答案 0 :(得分:5)
AssignFile()
之后,您必须选择 Reset
来读取文件,或者如果要写入文件,是否要 Append
或 Rewrite
文件。
如果您要保留文件中的现有数据并仅附加其他数据,则可以调用 Append()
。
如果要用新数据替换文件中的现有数据,请致电 Rewrite
。
我不知道布尔bRewritten
的用途是什么,我希望您将其设置为程序中的其他位置,以作为文件写入例程调用Append()
或ReWrite()
。
在answer to an earlier question中,建议使用TStringList
及其SaveToFile()
方法。如果要使用TStringList
并要追加,则首先读取文件(StringList.ReadFromFile()
),将新的字符串添加到StringList中,最后保存(StringList.SaveToFile()
)。要重写现有文件,您只需在将字符串添加到StringList并保存之前忽略读数。
我支持使用TStringList
作为现代且更方便的解决方案。
答案 1 :(得分:2)
旧式solution(您是否查看过See Also
帮助中的AssignFile
部分?):
AssignFile(tNotifications, 'Notifications.txt');
Append(tNotifications);
Writeln(tNotifications, newtext);
对于新的Delphi版本(help):
add IOUtils to uses
...
TFile.AppendAllText('Notifications.txt', newtext);
答案 2 :(得分:0)
或检查“追加”。顺便说一句:AssignFile可以用更正确的Assign代替。