急!一个整数赋值的问题 ( 积分: 30 )

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i,m:integer;
begin
[red] i:=1;
m:=0;[/red] //这部分是后加的
for i:=1 to iCount do
begin
for m:=0 to combobox1.Items.Count-1 do
if PDataList^.ZtID=MidBStr(Combobox1.Items.Strings[m],5,3) then
break;
if m=combobox1.Items.Count then
Combobox1.Items.Add(PDataList^.ZtID);
inc(PDataList);
end;
end;

我在调试过程中发现i的初始是:
E2171 Variable 'i' inaccessible here due to optimization
而m的初始是64?这是为何呀?
后来我加上i:=1,m:=0,还是不行,这二句在运行过程中不执行呀,还请高手指点!
(Delphi2005+window2003)
 
var
i,m:integer;
begin
[red] i:=1;
m:=0;[/red] //这部分是后加的
for i:=1 to iCount do
begin
for m:=0 to combobox1.Items.Count-1 do
if PDataList^.ZtID=MidBStr(Combobox1.Items.Strings[m],5,3) then
break;
if m=combobox1.Items.Count then
Combobox1.Items.Add(PDataList^.ZtID);
inc(PDataList);
end;
end;

我在调试过程中发现i的初始是:
E2171 Variable 'i' inaccessible here due to optimization
而m的初始是64?这是为何呀?
后来我加上i:=1,m:=0,还是不行,这二句在运行过程中不执行呀,还请高手指点!
(Delphi2005+window2003)
 
for m:=0 to combobox1.Items.Count-1 do
m在0 ~ combobox1.Items.Count-1之间

if m=combobox1.Items.Count then//这个条件永远不会满足的
Combobox1.Items.Add(PDataList^.ZtID);
前面二句加了也没有用的
 
不是呀,
m=combobox1.Items.count时会退出for循环呀!
 
这是delphi优化编译的结果,只要去除优化编译选项,就可以看了。
 
for i:=1 to iCount do
改成
for i:=0 to iCount-1 do
 
是的,我后来也是将编译优化去除,就可以了!和TYZhang大侠讲得一样,谢谢各位!
 
这两行代码有什么用?
 
错误信息的意思:就是i变量产生的最优化
 
不好意思,上次忘了结贴!
去掉优化就行了!谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
774
import
I
I
回复
0
查看
698
import
I
I
回复
0
查看
512
import
I
后退
顶部