摘要:
var
i:integer;
begin
for i:=0 to 10 do
begin
ary[i]:=0;
end;
end;
貌似简单的一段代码,却不简单。调试时,发现i居然是从11开始的,但是如果多声明一个j变量,变成
for i:=0 to 10 do
begin
j:=i;
ary[i]:=0;
end;
在这里j 完全没用,但是调试的时候却能使i正确地等于0.开始以为是程序哪里的内存操作过界造成的,但是即使是一个很简单的程序也是这样,折腾了半天不得其解。
通过搜索,才知道这个DELPHI的优化处理造成的,只要在 Project->options->compile中把Optimization项的沟去掉就一切都正常了。
阅读全文