来晚了,虽然结贴了,也附上一段吧(不知是否符合楼主要求)vfp 9.0 运行
** 建立一张允许打印的记录序号表。
S="7,8,10,-,-80,70-60,kk-y,40-50,101,30-j-60,104,张=50,@,#," && 注:文本框内容中,假如也有许多输入错误
Clear
Close all
Set safety off
set talk off
CREATE cursor 表 (记录号 n(10,0), 标记 c(10))
nlen=ALINES(M,S,",") && 文本框输入后,以逗号分行,总共分的行数,每行内容存入 M 中
STORE SECONDS() TO tm && 开始时间
for n=1 to nlen
c1=alltrim(GETWORDNUM(M(n),1,"-")) && 每行的前部
c2=alltrim(GETWORDNUM(M(n),2,"-")) && 每行的后部
if VAL(M(n))<1 && 不是数字时
errmes()
else
if at("-",M(n))>0 and (VAL(c1)<1 or VAL(c2)<1) && 每行中如果存在 "-"时
errmes()
else
if at("-",M(n))>0 && 行中存在 "-" 时
if c1>c2 && 页号从大到小时,返回来 比如: 70-60
n1=VAL(c2)
n2=VAL(c1)
else
n1=VAL(c1)
n2=VAL(c2)
endif
for t=n1 to n2 && 像 60-70 这样的数据行,从60一直排到70
insert into 表(记录号,标记) value(n1,"*")
n1=n1+1
endfor
else
insert into 表(记录号,标记) value(VAL(M(n)),"*")
endif
endif
endif
endfor
=MESSAGEBOX("耗时:"+STR(SECONDS()-tm,4,2)+"秒",64,"")
brow
close all
return
****************
procedure errmes
=MESSAGEBOX("输入的字符: "+M(n)+" 不合格",64,"")
endproc
[
本帖最后由 qingfameng 于 2013-3-2 12:04 编辑 ]