删除行的问题.

liangyong007a 2005-12-30 11:19:42
我想删除文件中的某行,如何做?文件很大.好像不太适合用TStringlist取出来再删除某行后,再存到文件.
...全文
99 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangyong007a 2005-12-30
  • 打赏
  • 举报
回复
行数太多了,影响速度.
柯本 2005-12-30
  • 打赏
  • 举报
回复
有N多人问过此类问题(每个开发语言版中都有)
基于目前操作系统的结构,我建议的方法是:(如文件名为t.txt)
1.将t.txt改名为t.bak
2.建一新文件t.txt
2.打开文件t.bak
3.将t.bak逐行读入,将不要删除的行写入t.txt
4.删除t.bak
liangyong007a 2005-12-30
  • 打赏
  • 举报
回复
lades and gentleman:
thanks
搞定
liangyong007a 2005-12-30
  • 打赏
  • 举报
回复
lines.delete?没有这个对象和方法
hellolongbin 2005-12-30
  • 打赏
  • 举报
回复
回复人: keiy() ( ) 信誉:105 2005-12-30 12:01:00 得分: 0


有N多人问过此类问题(每个开发语言版中都有)
基于目前操作系统的结构,我建议的方法是:(如文件名为t.txt)
1.将t.txt改名为t.bak
2.建一新文件t.txt
2.打开文件t.bak
3.将t.bak逐行读入,将不要删除的行写入t.txt
4.删除t.bak
----------------------------------
晕了
有逐行读的功夫,直接lines.delete多好


summersky204608 2005-12-30
  • 打赏
  • 举报
回复
10w 行不用1s,当然光单纯的删除某一行!
summersky204608 2005-12-30
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var b,d:TStringList;i:Integer;s:String;
begin
if OpenDialog1.Execute then
begin
b:=TStringList.Create;
d:=TStringList.Create;
b.LoadFromFile(OpenDialog1.FileName);
for i:=0 to b.Count-1 do
begin
s:=b.Strings[i];
if i=2 then //指定行
s:='';
if s<>'' then
d.Add(s);
end;
d.SaveToFile(OpenDialog1.FileName+'1');
b.Free;
d.Free;
ShowMessage('ok!');
end;
end;

end.
liangyong007a 2005-12-30
  • 打赏
  • 举报
回复
1,2万行左右
summersky204608 2005-12-30
  • 打赏
  • 举报
回复
能多大啊!用stringlist应该比较快的,
一行行的读,到指定行就为行的内容就为空,
最后加的时候,为空的不加,不会很慢的!
柯本 2005-12-30
  • 打赏
  • 举报
回复
目前的操作系统是顺序文件格式的,除了重写文件或我上面的copy法,别无它法
todouwang 2005-12-30
  • 打赏
  • 举报
回复
好象有个seek函数可以定位的吧?
这方面很少接触

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧