当前位置:  开发笔记 > 编程语言 > 正文

如何声明TDictionary枚举器?

如何解决《如何声明TDictionary枚举器?》经验,为你挑选了1个好方法。

我有一个TDictionary,它存储了一堆按名称索引的对象,我希望能够检查所有对象.所以我尝试了这个:

var enumerator: TMyObject;
begin
   for enumerator in myDictionary do

但那不会编译."不兼容的类型:'TMyObject'和'TPair'

所以我尝试了一下:

var enumerator: TPair;

那也没编译.此错误消息甚至更奇怪:不兼容的类型:'TPair'和'TPair'

所以显然我需要某种时髦的语法来用for ... in循环来枚举我的字典.有谁知道如何正确宣布它?

编辑:Fabio Gomes给出了一个正常工作的示例,但我的代码仍然无法使用他的方法编译.也许是因为我在另一个单位工作?它用于Value端的字典和类都在一个单元中定义,并且此代码在其他地方.这会使它成为编译器中的错误吗?任何人都可以验证吗?

编辑2:发现问题. http://qc.embarcadero.com/wc/qcmain.aspx?d=69461如果有人有兴趣的话.



1> Fabio Gomes..:

这与预期一样:

var
  Enum: TPair;
  MyDict: TDictionary;
begin
  MyDict := TDictionary.Create;
  try
    MyDict.Add('Form1', Self);
    for Enum in MyDict do
      ShowMessage(Enum.Key);
  finally
    MyDict.Free;
  end;

将此代码粘贴到任何表单的FormCreate事件中,并亲自查看.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有