重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
TDataSet類的Eof屬性應(yīng)該無(wú)人不知,只要寫過(guò)數(shù)據(jù)庫(kù)的,基本上都寫過(guò)以下的邏輯:
cdsDatabases.First;
while not cdsDatabases.Eof do
begin
(業(yè)務(wù)邏輯)
cdsDatabases.Next;
end;
這樣的邏輯理所當(dāng)然,可能大家也不一定會(huì)深究。但是如果問(wèn),當(dāng)游標(biāo)指向最后一條記錄時(shí),Eof返回的是True還是False?多數(shù)人可能都會(huì)愣一下。
事實(shí)上,答案是要看當(dāng)時(shí)的情況。
在官方文檔中,列出了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.
即:
打開空數(shù)據(jù)集時(shí)
調(diào)用Last方法去到最后一條記錄時(shí)
調(diào)用next方法,因當(dāng)前已是數(shù)據(jù)集的最后一條記錄,所以next失敗時(shí)
在空數(shù)據(jù)集中調(diào)用SetRange方法時(shí)
除了以上的4種情況,其余情形Eof都為false.
上面的代碼之所以正確,是因?yàn)槭褂玫氖莕ext,第一次指向最后一條記錄時(shí),方法是成功的,所以當(dāng)時(shí)的Eof是false,在最后一條記錄調(diào)用next時(shí),方法失敗,游標(biāo)指向的仍然是最后一條記錄,但這時(shí)候Eof已經(jīng)是true了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。