经过分析影响速度的主要原因是子字符串截取的速度上,在子字符串长度一样的情况下,SUBSTR()速度是最快的,但在本题子字符串的长度不一样的情况下SUBSTR()就用不上了,VFP9中的其它几个函数如:GETWORDNUM()、ALINES()等函数均不理想,只有另起炉灶了。

坚守VFP最后的阵地

2021-04-01 20:49
程序代码:T1 = SECONDS()
CLOSE DATABASES
USE 选择\sp ALIAS aa
ln = OCCURS(",", jmss1) + 1 && 获取题目的数量
FOR lnj = 1 TO ln
lnCnt = 0
RELEASE la
LOCAL la[10, 2]
SCAN
lnfz = VAL(GETWORDNUM(jmss1, lnj, ",")) &&VAL(SUBSTR(jmss1, 2 *lnj - 1, 1))
IF ASCAN(la, lnfz, 1, ALEN(la, 1), 1) = 0
lnCnt = lnCnt + 1
la[lnCnt, 1] = lnfz
la[lnCnt, 2] = 1
ELSE
lnRow = (ASCAN(la, lnfz, 1, ALEN(la, 1), 1) + 1) / 2
la[lnRow, 2] = la[lnRow, 2] + 1
ENDIF
ENDSCAN
ENDFOR
MESSAGEBOX(SECONDS() - T1)
FOR lnj = 1 TO ALEN(la, 1)
IF ASCAN(la, .F., 1, ALEN(la, 1), 1) > 0
lnCnt = (ASCAN(la, .F., 1, ALEN(la, 1), 1) + 1) / 2
EXIT
ENDIF
ENDFOR
DIMENSION la(lnCnt - 1, 2)
ASORT(la)
LIST MEMORY LIKE la && 最后一题的数组结果[此贴子已经被作者于2021-4-1 21:26编辑过]

2021-04-01 21:20

2021-04-01 21:50
[此贴子已经被作者于2021-4-1 22:04编辑过]

2021-04-01 22:00
2021-04-02 06:53
可能与工作区转换有关系,这种情况我也遇到过,具体原因说不清楚。

2021-04-02 08:47
2021-04-04 09:31