我不知道你的文件名 a.txt b.txt c.txt 是从 abc.txt 分解来的,
还是从 A34879347 B347839479344 等的首字符获得的。
程序如下已测试通过:
procedure TForm1.Button1Click(Sender: TObject);
var
sL,sLT,sLS:TStrings;
i:integer;
fName:string;
begin
sL:=TStringList.Create ;
sLT:=TStringList.Create ;
sLS:=TStringList.Create ;
try
sL.LoadFromFile('D:/ABC.txt');
for i:=sl.Count-1do
wnto 0do
begin
if pos('合计',sL)>0 then
begin
sL.Delete(i+1);
sL.Delete(i);
continue;
end;
if pos('----',sL)>0 then
begin
sL.Delete(i+1);
continue;
end;
if trim(sL)='' then
sL.delete(i);
end;
for i:=0 to sl.Count-1 do
begin
if (pos('----',sL)=0) then
SLS.Add(SL);
if (pos('----',sL)>0) or (i=sl.Count-1) then
begin
if i>0 then
begin
sLT.CommaText:=sLS[0];
fname:=copy(sLT[3],1,1);
fname:='d:/'+fname+'.txt';
SLS.SaveToFile(fname);
end;
sLs.clear;
end ;
end;
except
showmessage('文件格式不正确!');
end;
sl.free;
slt.free;
sls.free;
end;
调试文件 abc.txt
--------------------- 小二 --------------------
一项 二项 三项 四项 五项
1234 38348934 347189324 A34879347 34343.00
1234 34343434 434234343 A34343444 34343.33
1234 58479847 343423843 A43748942 34343.35
款项一 款项二 款项三 合计
3423455 3434244 434234342 3434242.34
--------------------- 李四 ----------------------
一项 二项 三项 五项
1234 873947234 3843942433 B347839479344
1234 342847293 3434928783 B479823472942
款项一 款项二 款项三 合计
48473984 398472947 384923473 897433.98
------------------- 张三 ----------------------
一项 二项 三项 六项
1234 472347923 847893792 C479384794234
1234 384729424 394792422 C894792384294
款项一 款项二 款项三 合计
3434234 3934242444 38947924242 94803.00