求一段delphi代码
读一行文本并判断条件:------如果满足----复制指定的内容到memo1(这里可以把已经判断过的行删除掉,这样文件内容就小了)---并跳到下一行判断------如果不...
读一行文本并判断条件:------ 如果满足----复制指定的内容到memo1(这里可以把已经判断过的行删除掉,这样文件内容就小了)---并跳到下一行判断------如果不满足----删除本行...然后一直这样到文件尾并保存就行了,这样这个文件里面就只会有最后一条数据了.要的数据到了memo里面去了,不需要的就删除.
展开
1个回答
展开全部
procedure TForm1.Button1Click(Sender: TObject);
var
f:TextFile;
s:string;
begin
OpenDialog1.Filter:='文本文件(*.txt)|*.txt'; //过滤文件
Memo1.Lines.Clear;//清空memo
if OpenDialog1.Execute then
begin
AssignFile(f,OpenDialog1.FileName);//打开一个文本文件。
Reset(f);//只读方式打开
while not Eof(f) do//文件没读完
begin
Readln(f,s);//读取一行
if Pos('ip',s)>0 then Memo1.Lines.Add(s);//条件判断。这里用pos判断包含字符 ip
end;
CloseFile(f);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//把Memo里面的东西保存到一个新的文本文件中去
Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'1.txt');
end;
{因为文本文件里面直接删除行不好操作,采取了一个变通的方法。先读取文本文件,进行判断,如果符合条件就保存到Memo里面去。最后把Memo里面的东西保存到一个指定的文件文件里面去。或者覆盖原来的文件。
}
var
f:TextFile;
s:string;
begin
OpenDialog1.Filter:='文本文件(*.txt)|*.txt'; //过滤文件
Memo1.Lines.Clear;//清空memo
if OpenDialog1.Execute then
begin
AssignFile(f,OpenDialog1.FileName);//打开一个文本文件。
Reset(f);//只读方式打开
while not Eof(f) do//文件没读完
begin
Readln(f,s);//读取一行
if Pos('ip',s)>0 then Memo1.Lines.Add(s);//条件判断。这里用pos判断包含字符 ip
end;
CloseFile(f);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//把Memo里面的东西保存到一个新的文本文件中去
Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'1.txt');
end;
{因为文本文件里面直接删除行不好操作,采取了一个变通的方法。先读取文本文件,进行判断,如果符合条件就保存到Memo里面去。最后把Memo里面的东西保存到一个指定的文件文件里面去。或者覆盖原来的文件。
}
追问
if Pos('ip',s)>0 then Memo1.Lines.Add(s);//条件判断。这里用pos判断包含字符 ip
请问我在这里后面加上一个判断,如果满足就copy或者add后 用delete(s)或是其他的如cut(s)之类的方法删除行,这个行不行得通?
追答
文本文件在操作的时候,可以读,可以添加新行
但是不建议删除行,这样会增加复杂性和出错的概率。
如果要实施编辑文件,那么就不能用文本文件的形式进行操作了
要用流的形式打开文本文件
自己根据换行符号来读取一行,然后进行判断。
用流来进行删除。
代码复杂程度直线上升不说,还非常容易出错。
不如用我上面的方法,简单又不会出错。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询