为什么delphi中for循环的循环变量不能跟踪(倾家荡产问问题,急!)(25分)

P

panwen

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用多个for循环进行运算时,用addwatch观察循环变量的值时提示
Variable 'i' inaccessible here due to optimization
 
S

sonie

Unregistered / Unconfirmed
GUEST, unregistred user!
因为你的for循环里没有实际有用的代码,比如说你只有i:=1;但没有j:=i之类的代码
delphi跟VC一样优化时不连接死代码
 
P

panwen

Unregistered / Unconfirmed
GUEST, unregistred user!
我的for循环里有很多代码,而且有用,现帖一部分如下:
//中间节点的差分式
for i:=1 to (m-1)do
for j:=0 to (n-1)do
begin
if t0[i,j]>=Tl then
begin
lam:=lam_l;
cp:=cp_l;
rou:=rou_l;
end
else
if t0[i,j]<=Ts then
begin
lam:=lam_s;
cp:=cp_s;
rou:=rou_s;
end
else
begin
lam_sl:=lam_s+((lam_l-lam_s)/(Tl-Ts))*(t0[i,j]-Ts);
lam:=lam_sl;
cp_sl:=cp_s+lf/(Tl-Ts);
cp:=cp_sl;
rou:=rou_sl;
//判断是否满足初始条件
test_sl:=(lam_sl*dt)/(rou_sl*cp_sl*dx*dx);
if test_sl>(1/(4+(4*dx*h)/lam_sl)) then
begin
judge:=false;
exit;
end;
end;
t1[i,j]:=t0[i,j]+(lam*dt/(rou*cp*dx*dx))*(t0[i+1,j]+t0[i-1,j]+t0[i,j+1]
+t0[i,j-1]-4*t0[i,j]);
end;

 
S

sonie

Unregistered / Unconfirmed
GUEST, unregistred user!
faint,没看清楚,你的问题根本就不是for循环能不能跟踪的问题。
你可以在project->options里把优化关掉。另你在for里设个断点试试。
 

萧月禾

Unregistered / Unconfirmed
GUEST, unregistred user!
实在不爽的话建议你改用while
 
P

pazee

Unregistered / Unconfirmed
GUEST, unregistred user!
调试的时候请把,Menu -> project -> options -> Compiler -> Optimization 关掉,
发布的时候再加上。
另外说明一点,根据pascal的语法说明,在for 循环中的循环变量,在循环之外是无效的
就是说你循环的for 那个i在for i:= ……之外一经没意义了。这与c语言不同。
 
P

panwen

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
700
import
I
I
回复
0
查看
799
import
I
I
回复
0
查看
606
import
I
顶部