Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何检测何时增加大小t字典_Delphi_Generics - Fatal编程技术网

Delphi 如何检测何时增加大小t字典

Delphi 如何检测何时增加大小t字典,delphi,generics,Delphi,Generics,我使用TDictionary来处理大量数据。如何检测大小增加的时刻词典?如果希望检测底层专用存储何时增长,则无法检测。这是由私有方法SetCapacity和Grow处理的,该类不提供外部钩子 您可以使用OnKeyNotify和OnValueNotify事件检测密钥和值修改。添加新密钥时,OnKeyNotify事件会在通知参数为cnAdded的情况下触发。实际上它也会在从Add和AddOrSetValue-DRY any-触发的Grow方法中完成-@StefanGlienke叹息。显然Grow应该

我使用TDictionary来处理大量数据。如何检测大小增加的时刻词典?

如果希望检测底层专用存储何时增长,则无法检测。这是由私有方法
SetCapacity
Grow
处理的,该类不提供外部钩子


您可以使用
OnKeyNotify
OnValueNotify
事件检测密钥和值修改。添加新密钥时,
OnKeyNotify
事件会在通知参数为
cnAdded
的情况下触发。

实际上它也会在从Add和AddOrSetValue-DRY any-触发的Grow方法中完成-@StefanGlienke叹息。显然
Grow
应该调用
SetCapacity
。看看一个如何使用清晰易懂的
*2
,另一个如何使用神秘的
shl 1
。在这种情况下,Grow是内部的优化版本,它只被称为带有清晰的前提条件,所以我认为这不是干巴巴的。SetCapacity不仅仅是容量的两倍,它还对输入值执行一些检查,而Grow不需要这些检查。好的,一个使用shl1,另一个使用shl2,但除此之外,我认为这很有意义。@Rudy。再灰烬淹没了支票。但即使您想要prem opt,也可以使用内部未选中的DoSetCapacity来完成。干燥是很重要的。此代码失败。@Rudyvelthui的SetCapacity是私有的,而TDictionary没有Capacity属性,因此这也是内部的。在其他情况下(TList、TQueue),内部调用SetCapacity。