我想把字符串存到文本文件中 请哪位高人指点一下 delphi
vari:Integer;j:Integer;strConfigPath:string;strConfig:string;String2:TStringList;stri...
var
i: Integer;
j: Integer;
strConfigPath: string;
strConfig: string;
String2 : TStringList;
string1:string;
begin
Result := False;
strConfigPath := getConfigPath();
strConfig := strConfigPath + ifthen(copy(strConfigPath, length(strConfigPath), 1) = '\', '', '\') + USER_Config; //target .txt file
string1:='<item class="1" id="dac68b64c0b54278b09823cc4d843434" plug="CBDataSet.CBDateSetPlugin"/><item class="2" id="dac68b64c0b54278b09823cc4d843434" plug="CBDataSet.CBDateSetPlugin"/>';
String2 := TStringList.Create;
String2.LoadFromFile(strConfig);
for i:=0 to String2.Count-1 do
begin
j:= pos('<CBCONFROOT>',String2.Strings[i]);
if j > 0 then
begin
String2.Insert(j,string1);
String2.SaveToFile(strConfig);
Result := True;
end
else break;
end; 展开
i: Integer;
j: Integer;
strConfigPath: string;
strConfig: string;
String2 : TStringList;
string1:string;
begin
Result := False;
strConfigPath := getConfigPath();
strConfig := strConfigPath + ifthen(copy(strConfigPath, length(strConfigPath), 1) = '\', '', '\') + USER_Config; //target .txt file
string1:='<item class="1" id="dac68b64c0b54278b09823cc4d843434" plug="CBDataSet.CBDateSetPlugin"/><item class="2" id="dac68b64c0b54278b09823cc4d843434" plug="CBDataSet.CBDateSetPlugin"/>';
String2 := TStringList.Create;
String2.LoadFromFile(strConfig);
for i:=0 to String2.Count-1 do
begin
j:= pos('<CBCONFROOT>',String2.Strings[i]);
if j > 0 then
begin
String2.Insert(j,string1);
String2.SaveToFile(strConfig);
Result := True;
end
else break;
end; 展开
2个回答
展开全部
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+#号后面的值,如果你加'<CBCONFROOT>',
//那么记得到时候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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询