以下是一段 《PB编程百例通》 里的一个“轻松背单词” 的源码,有些不懂,请教
原理是 通过一些文件操作函数 打开,并用流模式 读文件(流模式是什么啊?)
主窗口有 st_1,st_2 显示单词和意义
在事先写单词的 word.txt里每个单词占一行,然后单词与词义用TAB分开,
在窗口的OPEN事件中:
integer li_FileNum//打开文件的句柄
integer li_loops//读取文件的次数
integer li_i
long ll_flen, ll_bytes_read
string ls_part
SetPointer(HourGlass!)
this.setposition( topmost!)
ll_flen = FileLength("word.txt")//得到文件的长度
li_FileNum = FileOpen("word.txt", StreamMode!, Read!, LockRead!)
//以读的模式打开文件,按字节读取
//因为每次读文件最多只能读取32765个字节,所以应计算读取次数
IF ll_flen > 32765 THEN
IF Mod(ll_flen, 32765) = 0 THEN
li_loops = ll_flen//能整除
ELSE//不能整除
li_loops = (ll_flen/32765) + 1
END IF
ELSE
li_loops = 1
END IF
FOR li_i = 1 to li_loops//把整个文件组合成一个字符串
ll_bytes_read = FileRead(li_FileNum, ls_part)
is_total = is_total + ls_part
NEXT
FileClose(li_FileNum)
il_pre=1
timer(2)
timer事件中:
long ll_now, ll_pos
string ls_current
ll_now=pos(is_total,char(13),il_pre)
//在整个字符串中查找回车字符的位置
ls_current=mid(is_total,il_pre,ll_now - il_pre+1)
//得到一行数据
il_pre=ll_now+2
ll_pos = pos(ls_current,char(9),1)
//找到tab字符的位置
st_1.text=mid(ls_current,1,ll_pos - 1)
st_2.text=mid(ls_current,ll_pos + 1 )
原理没完全明白,可否指点一下?
this.width = 45*max(len(st_1.text),len(st_2.text))