Delphi t字典-无效密钥
我有这样的代码:Delphi t字典-无效密钥,delphi,delphi-2009,tdictionary,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; 类型 TMyDictionary=
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;
类型
TMyDictionary=TDictionary;
变量
myDict:TMyDictionary;
k、 v:整数;
//填充字典的代码
在myDict中为k。键可以
开始
v:=myDict.项目[k];
//其他东西
结束;
我随机看到在'v:=myDict.Items[k];'上抛出异常这说明k是无效的
其他人看到了吗?您是否在标记为
//其他内容的部分中修改了myDict
?尝试用一种仅使用局部变量的方法重现此问题
可能是您使用了来自两个不同线程的变量,或者可能是您更新了myDict中的元素
我将试着解释我关于复制它的答案:
您应该创建一个可以在另一台计算机上运行的方法,并显示您得到的错误
例如(问题:我得到一个被零除的异常):
var
i:整数;
开始
i:=3;
虽然(i查看CodeCentral,我看到针对TDictionary,尤其是支持for…in…构造的枚举器出现了许多错误。我没有在循环中修改myDict。我遍历字典中的每个部分以找到最大值。正如您所描述的。一个方法。只有一个线程。我在l中所做的一切oop正在寻找最大的“v”并将其存储在局部变量中。我的意思是,尝试制作一个示例过程来复制它,并将其发布到此处,以便其他人可以查看您的示例代码。以下是完整的循环:对于fcm中的k。键确实开始尝试v:=fcm.Items[k];如果v>max,则开始结果:=k;max:=v;结束;除了继续;结束;结束;
var
i : integer;
begin
i := 3;
while (i <= 0) do
begin
Writeln(FloatToStr(20/i));
Dec(i);
end;
end