如果是前面几层楼发的0122012200.txt,那么这个代码跑完是没有问题的,我又测试了一次,确实没有问题。
除非换了另一个文本文件,而且另一个文件的内容有改变。
不过,原代码也有不严密的地方,我再修改一下,你再看看修改后的行不行:
程序代码:
CLOSE DATABASES
cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure)- 1
nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
SET Default TO (mypath)
cstr=FILETOSTR("0122012200.txt")
CREATE CURSOR gkcj (考生号 c(14),姓名 c(10),报名区县 c(10),报名点 c(20),总分 n(3),语文 n(3),数学 n(3),外语 n(3),综合 n(3))
* 以下内容,是我自己的逻辑.
DIMENSION cj[1,9]
LOCAL isEnd as Boolean
=ALINES(axx,cstr,CHR(13)+CHR(10))
cj = ""
istart =1
DO WHILE isEnd =.f.
ino = ASCAN(axx,"2014年重庆市全国普通高考成绩通知单",istart)
IF ino>0 THEN
istart = ino + 13
IF istart >= ALEN(axx) THEN
isEnd = .t.
ENDIF
cj[1,1]=LEFT(axx[ino + 6],14) && 考生号
cj[1,2]=SUBSTR(axx[ino + 6],16) && 姓名
cj[1,3]=SUBSTR(axx[ino + 4],11) && 报名区县
cj[1,4]=SUBSTR(axx[ino + 8],11) && 报名点
=ALINES(axxZf, STRTRAN(axx[ino +12],":","") ,space(1))
irow2 = 5
FOR irow = 1 TO ALEN(axxZf)
IF ISDIGIT(LEFTC(axxZf[irow],1)) THEN
cj[1,irow2]=axxZf[irow] && 总分 ,语文 ,数学 ,外语,综合
irow2 = irow2 + 1
ENDIF
ENDFOR
RELEASE axxZf
INSERT INTO gkcj FROM ARRAY cj
cj = ""
ELSE
EXIT
ENDIF
ENDDO