Mas*_*ler 4 delphi generics dictionary delphi-2009
我有一个TDictionary,它存储了一堆按名称索引的对象,我希望能够检查所有对象.所以我尝试了这个:
var enumerator: TMyObject;
begin
for enumerator in myDictionary do
Run Code Online (Sandbox Code Playgroud)
但那不会编译."不兼容的类型:'TMyObject'和'TPair'
所以我尝试了一下:
var enumerator: TPair<string, TMyObject>;
Run Code Online (Sandbox Code Playgroud)
那也没编译.此错误消息甚至更奇怪:不兼容的类型:'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;
Run Code Online (Sandbox Code Playgroud)
将此代码粘贴到任何表单的FormCreate事件中,并亲自查看.
| 归档时间: |
|
| 查看次数: |
3609 次 |
| 最近记录: |