还是没解决:把文件中含有某一个字符串的行内容重写?执行rewrite()后文件内容变空了!(50分)

  • 主题发起人 dafuwengqing
  • 开始时间
D

dafuwengqing

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥们:
我想把文件中含有what字符串的行的内容重写。我的函数如下,但一执行rewrite()语句后文件内容变空了!
procedure writeinformation(filename,what,value:string);//把时间信息写入文件
var
timefile:textfile;
s:string;
begin
assignfile(timefile,filename);
rewrite(timefile);
repeat
readln(timefile,s);
if pos(what,s)>0 then
begin
writeln(timefile,what+'='+value);
break;
end;
until eof(timefile);
closefile(timefile);
end;
 
rewrite(timefile);
改为RESET
 
rewrite:Creates a new file and opens it.
原来的内容在Creates a new file的时候清掉了,当然后面的操作就失效了。
把rewrite换成Reset试试。
Reset:Opens an existing file.
 
改为reset就不能writeln了!
 
Reset打开的文件为只读的,
Rewrite 将创建文件.
 
你可以尝试用两个文件,从一个文件中读取一行数据,处理之后再写入另外一个文件。
这样的话就可以解决了。
 
Append(timefile)
 
要改的内容在中间,要嘛象楼上说的用拷贝的办法,要嘛用无类型文件或流进行操作,因为TextFile是顺序文件,Append(timefile)后只能在尾部增加内容
 
其实你可以用TStringList载入文件会更好处理
TStringList其实就像TListBox的Lines属性一样,操作非常方便,
处理完后,就可以回存
 
把文件读到MEMO或STRINGLIST里再单行操作写文件
要不就再新建一个写
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
780
import
I
I
回复
0
查看
651
import
I
顶部