点击或拖拽改变大小

Functions.Eof 方法

X#
确定何时遇到文件结尾。

命名空间:  XSharp.RT
程序集:  XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法
 FUNCTION Eof() AS LOGIC
查看代码

返回值

类型:Boolean
当尝试将记录指针移动到数据库文件中最后一个逻辑记录之后,或者数据库文件不包含记录时,返回 TRUE;否则返回 FALSE。
如果工作区中没有打开的数据库文件,EOF() 返回 TRUE。
备注
EOF() 是一个数据库函数,用于在记录指针向前移动通过数据库文件时测试文件结尾边界条件。
任何可以移动记录指针的命令都可以设置 EOF()。
最典型的应用是作为 DO WHILE 结构的 lCondition 参数的一部分,该结构顺序处理数据库文件中的记录。这里 lCondition 将包括 .NOT. EOF() 的测试,当 EOF() 返回 TRUE 时强制 DO WHILE 循环终止。
EOF() 和 Found() 经常可以互换使用,以测试 SEEK、FIND 或 LOCATE 命令是否失败。
然而,对于这些命令,Found() 更受欢迎。
当 EOF() 返回 TRUE 时,无论是否有活动的过滤器设置或 SetDeleted() 为 TRUE,记录指针都位于 LastRec() + 1 的位置。
进一步尝试向前移动记录指针将返回相同的结果而不会出错。
一旦 EOF() 设置为 TRUE,它将保持其值,直到再次尝试移动记录指针。

默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定或调用接受工作区参数(工作区编号或别名)的重载来使其在未选定的工作区上操作。
示例
此示例通过故意将记录指针移动到最后一条记录之后来演示 EOF():
X#
1USE sales
2DBGoBottom()
3QOut(EOF())            // 结果: FALSE
4SKIP
5QOut(EOF())            // 结果: TRUE
此示例使用别名表达式查询未选定工作区中 EOF() 的值:
X#
1USE sales NEW
2USE customer NEW
3QOut(Sales->EOF())
4QOut(Customer->EOF())
此示例说明如何将 EOF() 用作顺序数据库文件操作条件的一部分:
X#
 1USE sales INDEX custnum NEW
 2DO WHILE !(Sales->EOF())
 3    nOldCust := Sales->CustNum
 4    nTotalAmount := 0
 5    DO WHILE nOldCust = Sales->CustNum .AND. ;
 6                !(Sales->EOF()
 7        QOut(Sales->CustNum, ;
 8            Sales->Description, ;
 9            Sales->SaleAmount)
10        nTotalAmount += Sales->SaleAmount
11        SKIP
12    ENDDO
13    QOut("总金额: ", nTotalAmount)
14ENDDO
您也可以在上面的代码中使用带有别名参数的 EOF() 来编写 EOF 检查:
X#
1DO WHILE !EOF("Sales")
2    .
3    .
4ENDDO
参见