Functions.Eof 方法 | |
确定何时遇到文件结尾。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 查看代码返回值
类型:
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():
1USE sales
2DBGoBottom()
3QOut(EOF())
4SKIP
5QOut(EOF())
此示例使用别名表达式查询未选定工作区中 EOF() 的值:
1USE sales NEW
2USE customer NEW
3QOut(Sales->EOF())
4QOut(Customer->EOF())
此示例说明如何将 EOF() 用作顺序数据库文件操作条件的一部分:
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 检查:
1DO WHILE !EOF("Sales")
2 .
3 .
4ENDDO
参见