您好,登錄后才能下訂單哦!
TDataSet類的Eof屬性應該無人不知,只要寫過數據庫的,基本上都寫過以下的邏輯:
cdsDatabases.First;
while not cdsDatabases.Eof do
begin
(業務邏輯)
cdsDatabases.Next;
end;
這樣的邏輯理所當然,可能大家也不一定會深究。但是如果問,當游標指向最后一條記錄時,Eof返回的是True還是False?多數人可能都會愣一下。
事實上,答案是要看當時的情況。
在官方文檔中,列出了Eof為True的幾種情形:
Opens an empty dataset.
Calls a dataset's Last method. (Unless it is a unidirectional dataset)
Call a dataset's Next method, and the method fails because the current record is already the last row in the dataset.
Calls SetRange on an empty range or dataset.
即:
打開空數據集時
調用Last方法去到最后一條記錄時
調用next方法,因當前已是數據集的最后一條記錄,所以next失敗時
在空數據集中調用SetRange方法時
除了以上的4種情況,其余情形Eof都為false.
上面的代碼之所以正確,是因為使用的是next,第一次指向最后一條記錄時,方法是成功的,所以當時的Eof是false,在最后一條記錄調用next時,方法失敗,游標指向的仍然是最后一條記錄,但這時候Eof已經是true了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。