想在文件(textfile)中某两行之间插入一行,该怎么做?(300分)

  • 主题发起人 主题发起人 weihg
  • 开始时间 开始时间
我想是没有什么好办法.
append只能加在尾行.
在要添加的位置把文件割裂开,
然后append添加,再合并.

要不: memo.loadfromfile(xxx)
在memo里修改,然后,memo.savetofile(xxx)


行不?
 
用一个TStringList,把源文件通过LoadFromFile读入这个TStringList中,再往你需要的
行中插入Insert一个新行,最后SaveToFile覆盖原来的文件。
 
看看下面这一段,包你觉得爽!
procedure InsertLine(FileName: String; LineNO: Integer; IStr: String);
var FL: TStringList;
begin
FL := TStringList.Create;
if (FileName<>'') and (LineNO>0) and (IStr<>'') then
if FL.Count>=LineNO then
try
FL.LoadFromFile(FileName);
FL.Insert(LineNO-1,IStr);
FL.SaveToFile(FileName);
finally
FL.Free;
end
else Application.MessageBox(PChar('原文件少于'+IntToStr(LineNO)+'行!'),
'错误!', MB_ICONERROR+MB_OK);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
InsertLine(OpenDialog1.FileName,5,
'“看看,这就是新插入的行!”');
end;
 
1。新开一个文件
2。读入插入行前的数据
3。写入插入行
4。读入插入行后的数据
5。覆盖原文件
6。删除新文件。:)
 
to scshow: 妙!
 
seek和load 的方法是不行的,因为前面的数据量是变化的,sachow的方法好。谢谢大家!
特别谢谢sachow!!
 
后退
顶部