一个头痛的DELPHI问题

alphagx 2003-07-31 02:41:23
我今天写了一段代码,

for dw:=0 to dwItemCount-1 do
begin
.....
end;


if dw = dwItemCount then

我运行的时候,发现我的dw的值竟然是 3347440。
晕。。怎么回事?
...全文
41 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhg_zl 2003-08-02
  • 打赏
  • 举报
回复
mei you 初始化

消除编译室的警告

就不会这样了
Maple119 2003-08-02
  • 打赏
  • 举报
回复
Var
SaveDW : Integer;
Begin
SaveDW := 0;
for dw:=0 to dwItemCount-1 do
begin
.....
SaveDW := DW; //退出时保存
end;
//注,用于FOR循环的变量,在外面取值有时会出错.所以在退出时要先另外保存起了.
//相信楼主的代码在编译时会有警告提示.

if Savedw = dwItemCount then
fhuibo 2003-08-01
  • 打赏
  • 举报
回复
来晚了 同意
Spqk005 2003-08-01
  • 打赏
  • 举报
回复
同意楼上的观点
geodgehoul 2003-08-01
  • 打赏
  • 举报
回复
for dw:=0 to dwItemCount-1 do
begin
.....
end;
if dw = dwItemCount then
////////////////////////////
dw 在做循环变量的时候是压到栈里边的,编译器要对其进行优化,
如果你的循环体中没有使用到 dw,你还会发现dw 是从dwItemCount-1 降到 0

Integer值,delphi 不会初始化为 0
String 却是自动初始化为'' 的
不对的地方请指教
elilor 2003-08-01
  • 打赏
  • 举报
回复
同意楼上的,循环变量的值只在循环体内有效。
hiflower 2003-08-01
  • 打赏
  • 举报
回复
编译器应该有这个指示
hiflower 2003-08-01
  • 打赏
  • 举报
回复
请注意:
循环之后不要使用循环变量,由于 Delphi 的内存优化,它的值已经无效
primer 2003-08-01
  • 打赏
  • 举报
回复
哎,这个问题我也碰到过,到现在都难以接受DELPHI的这种处理方式。
alphagx 2003-07-31
  • 打赏
  • 举报
回复
dwItemCount初始化了。。

是0,
我取的是listCtrl的记录个数
  • 打赏
  • 举报
回复
一定是dwItemCount 没有初始化!不初始化系统给了什么值就不知道了。
alphagx 2003-07-31
  • 打赏
  • 举报
回复
dw 和 dwItemCount是 longint型的。

delphi 为什么要把 dw给优化掉呢??

下面明明用到了 dw
/////////////////////////////////////////
if dw = dwItemCount then


FrameSniper 2003-07-31
  • 打赏
  • 举报
回复
是其他地方的原因。
alphagx 2003-07-31
  • 打赏
  • 举报
回复
dwItemcount的值是0

我后来听我一个朋友说把优化去掉就OK了。

但是感觉很郁闷
佩佩zpm 2003-07-31
  • 打赏
  • 举报
回复
要注意声明变量的位置
Linux2001 2003-07-31
  • 打赏
  • 举报
回复
我今天发现我的一个变量的值是55667788哦,大家知道为什么吗?
楼主是在让大家猜谜语哦
jenemery 2003-07-31
  • 打赏
  • 举报
回复
把dw和dwItemCount的类型贴出来。还有在哪里等到值也铁出来,才好找原因。
DWGZ 2003-07-31
  • 打赏
  • 举报
回复
那你的dwItemCount 是多少, 先看看dwItemCount 有没有初始化
firetoucher 2003-07-31
  • 打赏
  • 举报
回复
?应该是其他地方的问题,不应该单单是你上面两句

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧