如何将文本文件分割成若干文本文件?

joann 2002-09-25 03:40:04
如何将文本文件分割成若干文本文件,每个文本文件为30条记录,并保存为file1,file2...fileN?
文件格式如下:

管辖机构: 4012345 报表编号 :C0000001
扣款通知书
机构: 4000000xx支行 $w 页号: 1
------------------------------------------------------------------------------

xx支行 $w
日期: 2002-01-01

邮编 : 123456
地址 : 九龙路63弄10号101室
姓名 : 郑一


xx银行消费信贷扣款通知书
扣款日期: 2002-01-01

尊敬的 郑一 先生/女士 :
我行已从您的帐户中支取以下金额作为本次供款额, 特此通知。
------------------------------------------------------------------------------
贷款帐号 : 400000000000000001 客户编号 : 00000001
楼盘名称 : xxxx建设发展有限公司 楼盘编号 : 000001
存款帐号 : 4000000000001234567  总期数 : 180
现用利率 : 0.00465000 罚息利率 : 0.00630000

期号 本金 利息 罚息 起息日期
------------------------------------------------------------------------------
20 4,670.04 5,185.98 0.00 2002-01-11

本次扣款金额为 : 9,856.02
阁下现时在我行的贷款余额为 : 1,110,594.20
------------------------------------------------------------------------------
说明:如有不符,请于扣款后20天内到经办 银行查询 ,过期则视阁下已认可。
...........
...........
...........
...........
...........
...........

管辖机构: 4012345 报表编号 :C0000001
扣款通知书
机构: 4000000xx支行 $w 页号: 2
------------------------------------------------------------------------------

xx支行 $w
日期: 2002-01-01

邮编 : 123456
地址 : 八龙路263弄1号1101室
姓名 : 郑一


xx银行消费信贷扣款通知书
扣款日期: 2002-01-01

尊敬的 王小一 先生/女士 :
我行已从您的帐户中支取以下金额作为本次供款额, 特此通知。
------------------------------------------------------------------------------
贷款帐号 : 400000000000000002 客户编号 : 00000007
楼盘名称 : xxxx建设发展有限公司 楼盘编号 : 000002
存款帐号 : 4000000000002222227  总期数 : 180
现用利率 : 0.00465000 罚息利率 : 0.00630000

期号 本金 利息 罚息 起息日期
------------------------------------------------------------------------------
3 407.72 1,420.40 1.00 2002-01-01

本次扣款金额为 : 1,828.12
阁下现时在我行的贷款余额为 : 337,781.94
------------------------------------------------------------------------------
说明:如有不符,请于扣款后20天内到经办 银行查询 ,过期则视阁下已认可。

有朋友写了如下程序:
var
i,j , x : integer;
list1 : Tstrings;
templist : Tstrings;
tempfilename : string;
begin
list1 := Tstringlist.create;
templist := Tstringlist.create;
list1.loadfromfile('filename');
x :=0;
j := 1;
for i:= 1 to list1.count do
begin
templist.add(list1[i-1]);
if length(trim(list1[i-1]))=0 then
inc(j); //如果出现空行,记录数增加1
if (j mod 30)=0 then //j记载当前正在处理记录的条数
begin
inc(x); //增加文件名序列号
tempfilename :='file'+ inttostr(x);//合成新文件名
templist.savetofile(tempfilename);//保存临时list
templist.clear;//清除临时list
end;
end;
end;
运行通过,但存在两个问题:
1.产生的file1,file2...fileN不是txt文件,且不能选择保存路径.
2.最后不足30条的记录被舍弃了,没有保存到fileN

...全文
371 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
drizzt123 2002-09-25
  • 打赏
  • 举报
回复
1.file1,file2当然是文本文件。(如你的意思是扩展名不对,文件名写作tempfilename :='file'+ inttostr(x)+'.txt'好了 )
2.选择保存路径,加上一个SaveDialog
3.最后不足30条记录被舍弃,因为条件句有漏洞,改为
if ( (j mod 30)=0 ) or (i=list1.count)
then ........
tweety 2002-09-25
  • 打赏
  • 举报
回复
要选择文件路径你稍微修改以下不就可以了?
我测试了,Tstrings.savetofile明明可以存成TXT文件。你把tempfilename加上.txt的扩展名就可以了。


----------------------------------------------
riff ur life

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧