440982023041013999|724|9383528||||||
1|1|605924021200000076|3950|||0|||
2|1|605924021200000390|11700|||0|||
3|1|605924021200000687|108389|||0|||
4|1|605924021200000734|13290|||0|||
5|1|605924021200001253|8491|||0|||
6|1|605924021200001261|2607|||0|||想得到除了第一行之外的每一行第三和第四个竖杠之间的数字。(第一行不管它)
3950
11700
108389
13290
8491
2607最好不要用Delimiter,因为这会破坏Tstringlist的格式。我想把这些数字累加出一个数出来。求源代码,解决后马上给分,谢谢。
1|1|605924021200000076|3950|||0|||
2|1|605924021200000390|11700|||0|||
3|1|605924021200000687|108389|||0|||
4|1|605924021200000734|13290|||0|||
5|1|605924021200001253|8491|||0|||
6|1|605924021200001261|2607|||0|||想得到除了第一行之外的每一行第三和第四个竖杠之间的数字。(第一行不管它)
3950
11700
108389
13290
8491
2607最好不要用Delimiter,因为这会破坏Tstringlist的格式。我想把这些数字累加出一个数出来。求源代码,解决后马上给分,谢谢。
var
SL: TStringList;
I, Res, iPos1, iPos2: Integer;
S: string;
begin
SL := TStringList.Create;
try
SL.Add('440982023041013999|724|9383528||||||');
SL.Add('1|1|605924021200000076|3950|||0|||');
SL.Add('2|1|605924021200000390|11700|||0|||');
SL.Add('3|1|605924021200000687|108389|||0|||');
SL.Add('4|1|605924021200000734|13290|||0|||');
SL.Add('5|1|605924021200001253|8491|||0|||');
SL.Add('6|1|605924021200001261|2607|||0|||');
Res := 0;
for I := 1 to SL.Count - 1 do
begin
iPos1 := PosEx('|', SL[I], 5) + 1;
iPos2 := PosEx('|', SL[I], iPos1);
S := Copy(SL[I], iPos1, iPos2 - iPos1);
ShowMessage(S);
Res := Res + StrToInt(S);
end;
finally
SL.Free;
end;
end;
1|1|605924021200000076|3950|||0|||
2|1|605924021200000390|11700|||0|||
3|1|605924021200000687|108389|||0|||
4|1|605924021200000734|13290|||0|||
5|1|605924021200001253|8491|||0|||
6|1|605924021200001261|2607|||0|||
7
8
9
10
11
begin
iPos1 := Pos('|', SL[I]);
iPos1 := PosEx('|', SL[I], iPos1 + 5) + 1;
iPos2 := PosEx('|', SL[I], iPos1);
S := Copy(SL[I], iPos1, iPos2 - iPos1);
ShowMessage(S);
Res := Res + StrToInt(S);
end;