gpt4 book ai didi

delphi - 如何声明 TDictionary 枚举器?

转载 作者:行者123 更新时间:2023-12-03 15:24:32 25 4
gpt4 key购买 nike

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

var enumerator: TMyObject;
begin
for enumerator in myDictionary do

但这无法编译。 “不兼容的类型:‘TMyObject’和‘TPair’

所以我尝试了一些不同的方法:

var enumerator: TPair<string, TMyObject>;

那也没有编译。这个错误消息更奇怪:不兼容的类型:'TPair'和'TPair'

所以显然我需要某种时髦的语法来使用 for .. in 循环枚举我的字典。有人知道如何正确声明吗?

编辑:Fabio Gomes 给出了一个可以正常工作的示例,但我的代码仍然无法使用他的方法进行编译。也许是因为我在不同的单位工作?字典和它用于值一侧的类都定义在一个单元中,并且此代码位于其他地方。这会使其成为编译器中的错误吗?谁能验证一下吗?

编辑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 事件中并亲自查看。

关于delphi - 如何声明 TDictionary 枚举器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com