Delphi怎么将TStringList按照分割符‘end’分割成多个TStringList
发布网友
发布时间:2022-05-05 06:47
我来回答
共1个回答
热心网友
时间:2023-10-13 17:25
用TObjectList管理分割后的StringList(替代List1,2,3),循环List,和end比较(用了不分大小写的CompareText,否则用CompareString),下面是测试代码,注意:TObjectList需要Uses Contnrs。
uses
Classes, SysUtils, Contnrs
...
var
ErrorMsg: String;
List: TStringList;
objList: TObjectList;
i : Integer;
flag_addnew : Boolean;
begin
objList := TObjectList.Create;
List:= TStringList.Create;
try
List.add('task');
List.add('A');
List.add('A');
List.add('end');
List.add('task');
List.add('b');
List.add('b');
List.add('end');
List.add('task');
List.add('c');
List.add('c');
List.add('end');
writeln('Total count: '+IntToStr(List.Count));
writeln(List.Text);
flag_addnew := true;
for i := 0 to List.Count-1 do
begin
if CompareText(List[i], 'end') <> 0 then
begin
if flag_addnew then
begin
objList.Add(TStringList.Create);
flag_addnew := false;
end;
TStringList(objList[objList.Count-1]).Add(List[i]);
end
else
flag_addnew := true;
end;
for i := 0 to objList.Count-1 do
begin
writeln('------ '+ IntToStr(i+1) + ' ------');
writeln(TStringList(objList[i]).Text);
end;
finally
List.Free;
objList.Free;
end;
end;
输出:
------ 1 ------
task
A
A
------ 2 ------
task
b
b
------ 3 ------
task
c
c
热心网友
时间:2023-10-13 17:25
用TObjectList管理分割后的StringList(替代List1,2,3),循环List,和end比较(用了不分大小写的CompareText,否则用CompareString),下面是测试代码,注意:TObjectList需要Uses Contnrs。
uses
Classes, SysUtils, Contnrs
...
var
ErrorMsg: String;
List: TStringList;
objList: TObjectList;
i : Integer;
flag_addnew : Boolean;
begin
objList := TObjectList.Create;
List:= TStringList.Create;
try
List.add('task');
List.add('A');
List.add('A');
List.add('end');
List.add('task');
List.add('b');
List.add('b');
List.add('end');
List.add('task');
List.add('c');
List.add('c');
List.add('end');
writeln('Total count: '+IntToStr(List.Count));
writeln(List.Text);
flag_addnew := true;
for i := 0 to List.Count-1 do
begin
if CompareText(List[i], 'end') <> 0 then
begin
if flag_addnew then
begin
objList.Add(TStringList.Create);
flag_addnew := false;
end;
TStringList(objList[objList.Count-1]).Add(List[i]);
end
else
flag_addnew := true;
end;
for i := 0 to objList.Count-1 do
begin
writeln('------ '+ IntToStr(i+1) + ' ------');
writeln(TStringList(objList[i]).Text);
end;
finally
List.Free;
objList.Free;
end;
end;
输出:
------ 1 ------
task
A
A
------ 2 ------
task
b
b
------ 3 ------
task
c
c