TDictionary - 无效密钥

时间:2009-03-12 15:42:06

标签: delphi delphi-2009 tdictionary

我有这样的代码:

type
  TMyDictionary = TDictionary<int, int>;

var
  myDict: TMyDictionary;
  k, v: integer;

  // code to fill the dictionary

  for k in myDict.Keys do
  begin
     v := myDict.Items[k];

     // other stuff
  end;

随机地我看到'v:= myDict.Items [k];'上抛出的异常说k无效。

其他人见过这个吗?

3 个答案:

答案 0 :(得分:1)

您是否在标有myDict的部分内修改了// other stuff

答案 1 :(得分:1)

查看CodeCentral我看到针对TDictionary的一些错误,特别是支持for ... in ...构造的枚举器。

答案 2 :(得分:0)

尝试在仅使用局部变量的单个方法中重现此问题。

可能是你使用了来自2个不同线程的变量,或者你可能更新了myDict中的元素。

我会尝试解释有关复制它的答案:

你应该创建一个可以在另一台计算机上运行的方法,并显示你得到的错误。

所以例如(问题:我得到除零除外):

var
   i : integer;
begin
   i := 3;
   while (i <= 0) do
   begin
     Writeln(FloatToStr(20/i));
     Dec(i);
   end;
end

如果您在计算机上运行此操作,则人们将获得除以零的异常。所以我能够重现这个问题。尝试创建尽可能简单的代码段,以便以一致的方式重现您遇到的问题。