这么点数据量,跟配置没有关系,算法问题而已。
授人以渔,不授人以鱼。
********************************************************** * 找出三个字段之间规律的算法: * * 第一个字段,以“[”为界,用LEFT()函数取该界的左侧全部 * * 当然,从第二条记录开始,该字段的左侧开始部位的取值* * 应该以上一条记录的最后一个中文字为准; * * 第二个字段,很好分界,从“[”开始,到最近的第一个中文 * * 字前面一个字符结束; * * 第三个字段,从最近的第一个中文字开始,到最近的最后一个* * 中文字结束。 * ********************************************************** CLOSE ALL SET DEFAULT TO C:\RR\Foxpro\ SET SAFETY OFF Cstr=" how often[]肻多久一次 exercise['eks2saiz]v.&n.锻炼;运动 skateboard[]v.踩滑板;参加滑板运动 hardly['ha:dli]adv. 几乎不;几乎没有 ever['ev2]adv. 曾;曾经 shop[60p]v.购物 once[w3ns]adv. 一次 ABC" IF !FILE("拆分字符串.DBF") CREATE TABLE 拆分字符串.DBF FREE ; (单词 C(15), 音标 C(20), 汉意 C(30)) ELSE USE 拆分字符串.DBF ZAP ENDIF STORE 1 TO 左边界, 右边界, 左中括号次数, 右中括号次数 字符串长度=LENC(Cstr) 右中括号个数=OCCURS("]",Cstr) DO WHILE 右边界<字符串长度 ********************* * 取第一个字段内容 * ********************* STORE "" TO 单词内容,音标内容,汉意内容 左中括号位置=ATCC("[",Cstr,左中括号次数) 右边界=左中括号位置-1 FOR I=左边界 TO 右边界 单词内容=单词内容+SUBSTRC(Cstr,I,1) NEXT ********************* * 取第二个字段内容 * ********************* 左边界=左中括号位置 右中括号位置=ATCC("]",Cstr,右中括号次数) 右边界=右中括号位置+1 DO WHILE 右边界<=字符串长度 &&查找汉字位置 IF ASC(SUBSTRC(Cstr,右边界,1))>128 右边界=右边界-1 &&第一个汉字的左边一位就是“音标”字段的结束 EXIT ELSE 右边界=右边界+1 ENDIF ENDDO FOR I=左边界 TO 右边界 音标内容=音标内容+SUBSTRC(Cstr,I,1) NEXT ********************* * 取第三个字段内容 * ********************* 左边界=右边界+1 右边界=左边界 DO WHILE 右边界<=字符串长度 &&查找汉字位置 IF ASC(SUBSTRC(Cstr,右边界,1))<129 右边界=右边界-1 &&第一个非汉字的左边一位就是“汉意”字段的结束 EXIT ELSE 右边界=右边界+1 ENDIF ENDDO FOR I=左边界 TO 右边界 汉意内容=汉意内容+SUBSTRC(Cstr,I,1) NEXT ******************* * 插入各字段内容 * ******************* INSERT INTO 拆分字符串.DBF VALUES (LTRIM(单词内容),LTRIM(音标内容),LTRIM(汉意内容)) *************** * 重置各位置 * *************** 左边界=右边界+1 左中括号次数=左中括号次数+1 右中括号次数=右中括号次数+1 IF 右中括号次数>右中括号个数 EXIT ENDIF ENDDO CLOSE ALL SET SAFETY OFF RETURN
CLEAR DECLARE LONG GetTickCount IN WIN32API SS=0 Start=GetTickCount() FOR I=1 TO 10000000 SS=SS+1 NEXT ?"FOR 循环1000万次的时间为:"+STR(GetTickCount()-Start,5)+"毫秒"+CHR(13)+CHR(13) FONT "微软雅黑", 12 SS=0 I=1 Start=GetTickCount() DO WHILE I<10000001 SS=SS+1 I=I+1 ENDDO ?"DO WHILE 循环1000万次的时间为:"+STR(GetTickCount()-Start,5)+"毫秒" FONT "微软雅黑", 12 CLEAR DLLS RETURN