编译的时候,编译器没告诉你,循环之后i的值不可用? i := 0; for i := 0 to 100 do ..... if i = 100 then ...//这个语句编译器会给个Warning提示你的 [Warning] Unit1.pas(33): FOR-Loop variable 'i' may be undefined after loop
既然大家都是来混分的,就不要那么刻薄了吧 :)for i:=m to n do something; i=? 当这个循环成立的时候,循环后的i值才有意义。
var x,i:integer; begin x:=0; for i:=0 to x-1 do; showmessage(inttostr(i)) {Cup:窗口代码信息,下面代码x值在eax中,i值在ebx中 xor eax,eax // Eax 中设置0 ,x:=0; dec eax // Eax 中设置循环结束条件 test eax,eax jl +$07 --------| //此时SF<>OF 满足跳转 inc eax | xor ebx,ebx |跳过循环 inc ebx <--| | dec eax | | jnz -$04 ---| | .... <-------| Mov eax,ebx //ebx付值部分被跳过,所以还是初始值 Call IntToStr .... Call ShowMessage .... } end;
'编译的时候,循环之后i的值不可用'--- Rail100 来此受益了!又学到一个!哈哈
i 没有初始值啊~ 所以必然是一个随机数 呵呵~ 那个循环等于没有~~ begin i:=0; for i:=0 to -1 do ; showmessage(inttostr(i)); end; 这样可以证明 小伙子,用变量的时候要赋予初值阿1!!!
to 回复人: jinjazz(近身剪(充电中...)) ( ) 信誉:132 2005-04-19 18:43:00 得分: 0
我也是看了CPU 窗口代码信息 才知道delphi 的FOR 和C的不同 C就不是这样的C: i 会 =0; to 回复人: bluejing0(此名已被占用!) ( ) 信誉:100
你自己看看你的代码,如果 i:=0 我就去死....To 大家: 我的代码是 for i:=0 to list.count-1 do something 我疏忽的是 list.count =0 的时候 所以 要加一句 if list.count<=0 then exit; 要不用while ...................
你必须处理i为0的情况的话,最好用repeat..until
>>我的代码是 for i:=0 to list.count-1 do something 你是怎么声明i的? var i:dword? 这样肯定有问题,如果var i:integer;即使list.count =0 的时候也没有关系了。
Project->Options->Compiler->Code generation->Optimization 去掉,再试试。
我的意思是for 不好用
昨天被它害得加班
i:=个随机数;
我的意思是for 不好用
昨天被它害得加班
回复人: jinjazz(近身剪(充电中...)) ( ) 信誉:132 2005-04-19 14:29:00 得分: 0
被 for i:=0 to -1 害得加班,你干脆找块豆腐撞死算了
哈哈哈哈哈
经典
i := 0;
for i := 0 to 100 do
.....
if i = 100 then ...//这个语句编译器会给个Warning提示你的
[Warning] Unit1.pas(33): FOR-Loop variable 'i' may be undefined after loop
something;
i=?
当这个循环成立的时候,循环后的i值才有意义。
begin
x:=0;
for i:=0 to x-1 do;
showmessage(inttostr(i)) {Cup:窗口代码信息,下面代码x值在eax中,i值在ebx中
xor eax,eax // Eax 中设置0 ,x:=0;
dec eax // Eax 中设置循环结束条件
test eax,eax
jl +$07 --------| //此时SF<>OF 满足跳转
inc eax |
xor ebx,ebx |跳过循环
inc ebx <--| |
dec eax | |
jnz -$04 ---| |
.... <-------|
Mov eax,ebx //ebx付值部分被跳过,所以还是初始值
Call IntToStr
....
Call ShowMessage
.... }
end;
来此受益了!又学到一个!哈哈
所以必然是一个随机数 呵呵~
那个循环等于没有~~
begin
i:=0;
for i:=0 to -1 do
;
showmessage(inttostr(i));
end;
这样可以证明
小伙子,用变量的时候要赋予初值阿1!!!
我也是看了CPU 窗口代码信息 才知道delphi 的FOR 和C的不同
C就不是这样的C: i 会 =0;
to 回复人: bluejing0(此名已被占用!) ( ) 信誉:100
你自己看看你的代码,如果 i:=0 我就去死....To 大家:
我的代码是 for i:=0 to list.count-1 do something
我疏忽的是 list.count =0 的时候
所以 要加一句 if list.count<=0 then exit;
要不用while ...................
你是怎么声明i的? var i:dword? 这样肯定有问题,如果var i:integer;即使list.count =0 的时候也没有关系了。
我不用考虑移植
不用DWORD的;