delphi – 如何声明TDictionary枚举器?
发布时间:2020-12-15 09:26:38 所属栏目:大数据 来源:网络整理
导读:我有一个TDictionary,它存储了一堆按名称索引的对象,我希望能够检查所有对象.所以我尝试了这个: var enumerator: TMyObject;begin for enumerator in myDictionary do 但那不会编译. “不兼容的类型:’TMyObject’和’TPair’ 所以我尝试了一下: var enum
我有一个TDictionary,它存储了一堆按名称索引的对象,我希望能够检查所有对象.所以我尝试了这个:
var enumerator: TMyObject; begin for enumerator in myDictionary do 但那不会编译. “不兼容的类型:’TMyObject’和’TPair’ 所以我尝试了一下: var enumerator: TPair<string,TMyObject>; 那也没编译.此错误消息甚至更奇怪:不兼容的类型:’TPair’和’TPair’ 所以显然我需要某种时髦的语法来用for … in循环来枚举我的字典.有谁知道如何正确宣布它? 编辑:Fabio Gomes给出了一个正常工作的示例,但我的代码仍然无法使用他的方法编译.也许是因为我在另一个单位工作?它用于Value端的字典和类都在一个单元中定义,并且此代码在其他地方.这会使它成为编译器中的错误吗?任何人都可以验证吗? 编辑2:发现问题. http://qc.embarcadero.com/wc/qcmain.aspx?d=69461,如果有人有兴趣. 解决方法
这与预期一样:
var Enum: TPair<string,TForm>; MyDict: TDictionary<string,TForm>; begin MyDict := TDictionary<string,TForm>.Create; try MyDict.Add('Form1',Self); for Enum in MyDict do ShowMessage(Enum.Key); finally MyDict.Free; end; 将此代码粘贴到任何表单的FormCreate事件中,并亲自查看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |