D7,在某个文本文件中找某串字符串,如果找到就退出,找不到就再找另外一个字符串,然后将该字符串删除,再添加新字符串进去,然后保存重写要求!DELPHI 7.0,我要从一个文本文件中读取N行字符,然后从中找出指定的某串字符(字符串A),如果某个指定的字符串(字符串A)存在,则结束程序,如果不存在(字符串A),则再找字符串B,然后将这串字符(字符串B)删除,再在相同位置添加另一串字符(字符串C),再保存文本文件:c:\a.txt
文本文件内容包括多行:abc
dke,coodke
wek中文国国际dsnck
ew,dk
cccc
dddd我需要查找的字符串(字符串A)也包括多行haha1111
未能找到上述字符串,判定该字符串不存在,则再找cccc然后将上述字符串替换为
china_dsnck
ew,dk然后保存,文本文件的最终内容为:abc
dke,coodke
wek中文国国际dsnck
ew,dk
china_dsnck
ew,dk
dddd上述要求用 DELPHI 7 如何实现?
以上只是举例来说,实际情况中上述字符串都是超过 1K 字节的,有的甚至超过10K。
该如何实现?procedure TForm1.Button1Click(Sender: TObject);
var
l:tstringlist;
s1,s2:string;
i,j:integer;
begin
s1 := 'haha1111';
s2 := 'cccc';
l := tstringlist.Create;
l.LoadFromFile('a.txt');
for i := 0 to l.Count - 1 do
begin
j:= pos(s1,l.Strings[i]);
if j > 0 then break
else stringreplace(l.Strings[i],s2,'china_dsnck#13#10ew,dk',[rfReplaceAll]);
end;
l.SaveToFile('a.txt');
end;有人提供上述方案,但是提示STRING 不能超过 255 个字节能否用 strimgstream 来实现?如何实现?
文本文件内容包括多行:abc
dke,coodke
wek中文国国际dsnck
ew,dk
cccc
dddd我需要查找的字符串(字符串A)也包括多行haha1111
未能找到上述字符串,判定该字符串不存在,则再找cccc然后将上述字符串替换为
china_dsnck
ew,dk然后保存,文本文件的最终内容为:abc
dke,coodke
wek中文国国际dsnck
ew,dk
china_dsnck
ew,dk
dddd上述要求用 DELPHI 7 如何实现?
以上只是举例来说,实际情况中上述字符串都是超过 1K 字节的,有的甚至超过10K。
该如何实现?procedure TForm1.Button1Click(Sender: TObject);
var
l:tstringlist;
s1,s2:string;
i,j:integer;
begin
s1 := 'haha1111';
s2 := 'cccc';
l := tstringlist.Create;
l.LoadFromFile('a.txt');
for i := 0 to l.Count - 1 do
begin
j:= pos(s1,l.Strings[i]);
if j > 0 then break
else stringreplace(l.Strings[i],s2,'china_dsnck#13#10ew,dk',[rfReplaceAll]);
end;
l.SaveToFile('a.txt');
end;有人提供上述方案,但是提示STRING 不能超过 255 个字节能否用 strimgstream 来实现?如何实现?
查找abcdefgh
先找前255个,ab,找到就再后边的串中继续。。找不到,就肯定没有了。如果不用POS,你就一个一个字符的去匹配。
procedure TForm1.Button7Click(Sender: TObject);
var
mStr:string;
mStr2:string;
i:integer;
begin
mStr := '';
mStr2 := '';
for i:=1 to 1000 do
mStr:=mStr+ IntToStr(i mod 10);
for i:= 1 to 10 do
mStr2 := mStr2 + mStr;
Memo1.Lines.Add(mStr2);
end;当然,如果直接赋值,例如:mStr:='aksjfdksfldfd......'的话,是不能超过255的,但如果是mStr := 'alkdjfslkjf......' + 'kldsjflksjdflksjf....'的话,就可以达到ansistring的范围。
var
mStrList: TStrings;
mStr: string;
begin
mStrList := TStringList.Create;
mStrList.LoadFromFile('aa.txt');
mStr := mStrList.Text;
//开始使用Pos和PosEx进行查找
//......
//
mStrList.Destroy;
end;