在使用TStringlist謹慎使用For循環


由於習慣於使用For循環,筆者在開發時遇到奇怪的問題。

在TTabset組件管理大量對象時使用了類似下面的語句

For I:=0 to aTabSet.Tabs.Count-1 do

begin

TObject(aTabSet.Tabs.Objects[I]).Free;

aTabSet.Tabs.Delete(I);

end;

 

乍一看沒問題,編譯,運行,結果出錯啦!

找了半天的原因,在發現,如此操作,Tabs.Count都已經發生了變化,I值已經超出Count的范圍,不出錯才怪!

后來改用了While循環,終於不出錯啦。

研究了一下,如果非要用For循環的話,可以這樣寫:

For I:=aTabSet.Tabs.Count-1 downto 0 do

begin

TObject(aTabSet.Tabs.Objects[I]).Free;

aTabSet.Tabs.Delete(I);

end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM