| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5658 人关注过本帖
标题:求助,关于skip命令
只看楼主 加入收藏
kevin0111
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-9-11
收藏
 问题点数:0 回复次数:11 
求助,关于skip命令
新手刚刚学习vfp。今晚看在教程书上讲skip命令的时候,遇到一个范例程序,如下:
======================以下为书中原文
use 学生信息
skip -1
?recno(),bof()     &&打印记录号和判断是否指向记录头部
skip
?recno(),bof()
go bottom
skip
?recno(),eof()     &&打印记录号和判断是否指向记录尾部
use

显示结果为:

       1  .T.
       1  .F.
       6  .T.
======================以上为书中原文所示


[bo]该学生信息表我照书中建的,共有5条记录,一切设定均和书中所示一样。[/bo]

问题是,我运行结果的第二条是  2  .F.
不同于原书的   1  .F.
其它2条显示结果都是和书中一样
反复验证多次,,,不得答案
所以想求助高手到底是怎么回事,skip命令从表头往下跳时会直接越过第一个记录吗?我究竟哪来出问题才和书里写的不一样?
谢谢:)

[[it] 本帖最后由 kevin0111 于 2008-9-12 00:03 编辑 [/it]]
搜索更多相关主题的帖子: skip 命令 
2008-09-11 23:55
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
从头到尾运行一次,你就会得到与书本一样的结果了。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-09-12 00:23
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
楼主得到的答案应该是正确的
2008-09-12 08:15
szy345
Rank: 4
来 自:江苏——南京
等 级:贵宾
威 望:14
帖 子:336
专家分:14
注 册:2008-8-6
收藏
得分:0 
同意2 .f.

不知 Tiger5392 怎么理解?
2008-09-12 09:11
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
楼主得出的结果是正确的,书上答案有误了。
因为打开数据表时,记录指针指向top(1)
skip -1   时bof()=.t.,但recn()还是指向top(1)
再skip时,自然从1 移动到2,不存在跳过第一条记录的问题。
2008-09-12 09:18
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
对不起,2楼回答失误了。ibmland_002,szy345,qjbzjp是正确的

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-09-12 10:18
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11827
专家分:43421
注 册:2006-5-13
收藏
得分:0 
skip-1并不会将记录号变成0,尽管BOF()=T,但是记录号还是为1。同样,若EOF()=T时,其记录号是最后一条记录,而不会是最后记录号+1。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2008-09-12 10:49
szy345
Rank: 4
来 自:江苏——南京
等 级:贵宾
威 望:14
帖 子:336
专家分:14
注 册:2008-8-6
收藏
得分:0 
[bo][un]hu9jj[/un] 在 2008/9/12 10:49 的发言:[/bo]

若EOF()=T时,其记录号是最后一条记录,而不会是最后记录号+1。


这个好象就不对了,对于recno()函数来说,当EOF()=T时,recno()函数返回的确实是最后记录号+1,只不过这个数不是真实的,是无效的数据。
2008-09-12 11:17
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
BOF和EOF不一样。当指针在表头时,不管BOF为真或假,记录号总是1;当记录指针为最后一条记录时,EOF为假,而当EOF为真时,记录号是总记录数加1。

[[it] 本帖最后由 ibmlang_002 于 2008-9-12 12:01 编辑 [/it]]
2008-09-12 11:59
kevin0111
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-9-11
收藏
得分:0 
多谢几位热心帮忙解答,让我理解了更多概念,

原来就是书上这里出问题了,呵呵,心里的郁闷一扫而空了,

谢谢!!
2008-09-12 20:37
快速回复:求助,关于skip命令
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012980 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved