有关bof和eof的问题(50分)

  • 主题发起人 主题发起人 fbsjellin
  • 开始时间 开始时间
F

fbsjellin

Unregistered / Unconfirmed
GUEST, unregistred user!
bof和eof是分别指向首、末纪录时为true.我现在的疑问是当遍历整个表时,一般用
while not eof 作为判断条件,但到了最后一条纪录时,eof为true,应该就不满足
while条件了,而实际上程序还能往下执行一次,这是为什么?是不是我的理解有错误
望不吝赐教!
 
EoF是指己经到了最后一条,再next时才为真的.
而不是一到最后一条就为真的.
 
可是我做了个测试
我用last方法到最后一条记录,然后用if eof判断,结果是按照eof 为true执行的阿
 
接受答案了.
 
不好意思,我不能经常上网
如果您有时间,就把详细一点的答案发到我信箱
fbsjellin@hotmail.com
//bow~~!
 
Eof为真的情况如下:
1、打开一个空库
2、调用数据集的last方法
[red]3、调用数据集的next方法,并且此方法调用不成功(因数据指针已指向数据集最后一行记录)[/red]
4、在一个空的数据集或范围内调用setrange方法。
除以上外其它Eof全为false
红字部分就是为什么使用while not eof的原因(在循环内如果使用了last方法,则最后一行记录将不被处理)
另外:如果打开一个数据集时Eof和Bof全为true则此库为空
 
实际上Last时指向了最后一条记录之后,将eof置为真后,又指向最后一条记录。下面给个
例子你试一下就明白了:
table1.Last;
if table1.Eof then showmessage('last eof true');
table1.Prior; //试着把这一句注释掉
table1.recno:=table1.recordcount;
if table1.eof then showmessage('rowcount eof true')
else showmessage('rowcount eof false');
在中间那一句,如果没有把它注释掉,那么执行下一句为eof为假,但如果把它注释掉,由
于eof原已为真,而记录又未离开最后一条,所以eof仍然为真。只在用last或在记录到达
最后一条时再执行一个next,才会使eof为真。
 
后退
顶部