Delphi2009 泛型容器遍歷超界問題

2022-08-05 13:48:28 字數 509 閱讀 7595

今天用tdictionary,發現居然一個成員的集合遍歷裡有2次。。。。就是下面簡單的遍歷

varlpair : tpair;

begin

for lpair in fformdictionary do

begin

tform(lpair.value).free;

end;

導致fff0006c的記憶體溢位!,網上搜尋了一下,解決方法如下:

開啟generics.collections單元,

#1. 將1679行

”inherited;”改為: inherited create;

#2. 修改三處(第1596行、第1631行、第1666行)“while findex < length(fdictionary.fitems) do”為 while findex < length(fdictionary.fitems) - 1 do

具體的分析可以借鑑:

附件:修正的generics.collections.dcu