procedure TForm1.Button1Click(Sender: TObject);
var
s:TStringList;
i,j:Integer;
str1,str2:string;
begin
OpenDialog1.Execute;
s:=TStringList.Create;
s.Text:=Memo1.Text; //先给s值,
str1:='插入值'; //我这里在有#号的位置的前面写上“插入值”
str2:=s.Text; //再给str2变量赋一个s的值,用于后面的循环
i:=0; //初始化循环中的变量
j:=0; //初始化循环中的变量
while Pos('#',str2) > 0 do //while..do 循环,循环到str2里面有没#号为止
begin
i:=Pos('#',str2); //首选获取str2的#的位置,
j:=i+j;
{然后+上j的值,这里逻辑可能有点复杂,j用于copy s的值,i用于copy str2的值
因为str2的值每次循环都会删除#号前面的部分,所以会越来越少,而s值每次循环会再#号前加str1,所以会越来越多
所以用i和j区分,i每次循环重新定义,j每次循环累加。 }
s.Text:=Copy(s.Text,0,j-1) + str1 + Copy(s.Text,j,Length(s.Text));
//copy看你代码用过,应该会用,这里就是截取,#号前的值+str1+#号后面的值,如果你加'',
//那么记得到时候j还要加上你这个字符的长度。
j:=j+length(str1); //每次结束后,j还要加上插入值的长度
str2:=Copy(str2,i+1,Length(str2)); //这里就是将str2中#号以及#号之前的部分删除,然后继续循环,直到没有#号
end;
s.SaveToFile(OpenDialog1.FileName); //存入文本就这么写。没有问题的。
{这是我自己写的DOME运算的值:
sdfasdfasdfhjsf#123123123
sdfskj#12312
dcvnm,nf#53242
fksjflkas#12315
下面是结束后文本保存的值
sdfasdfasdfhjsf插入值#123123123
sdfskj插入值#12312
dcvnm,nf插入值#53242
fksjflkas插入值#12315
}
end;
FINI:= TIniFile.Create(Extractfilepath(Application.ExeName)+'aaa.ini');
FINI.WriteString('Configuration','A', 'bbb'));
FINI.Destroy;