線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2354
推到 Plurk!
推到 Facebook!

关于FOR循环的调试问题

尚未結案
logv
一般會員


發表:5
回覆:22
積分:10
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-19 12:29:25 IP:222.240.xxx.xxx 未訂閱
示例代码如下:
var
i:integer;
x,y:array [0..9] of string;
begin
for i:=0 to 9 do
   begin
   x[i]:=inttostr(i);   //断点1
   end;    for i:=0 to 9 do
   begin
   y[i]:=x[i];    //断点2
   end;
end;
在上面代码中,如果设置该两处断点调试的话,会发现第1个循环,i是从0到9变化的,而第2个循环i则是从10到1变化的,请问这是为什么? 注:该段代码仅为演示,请不必纠缠于实用价值.
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-19 13:42:33 IP:221.226.xxx.xxx 未訂閱
这种情况除非你机器或DELPHI有问题,否则不可能出现这个情况,这个程序不管你用断点也好,用下面的输出的方法也好,只要DELPHI没问题,怎么也不可能出现第二个循环从10 TO 1的变化。    在第二个循环运行时 for i:=0 to 9 do i 已经被初始化赋值为0了。
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  x,y:array [0..9] of string;
begin
  Memo1.Lines.Clear;
  for i:=0 to 9 do
  begin
    x[i] := inttostr(i);   //断点1
    Memo1.Lines.Add(x[i]);
  end;      Memo2.Lines.Clear;
  for i:=0 to 9 do
  begin
    y[i] := x[i];    //断点2
    Memo2.Lines.Add(inttostr(i));
  end;    end;
logv
一般會員


發表:5
回覆:22
積分:10
註冊:2004-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-19 14:38:59 IP:222.240.xxx.xxx 未訂閱
请先测试再回答 而且,请用我的代码测试而不要进行任何修改 發表人 - logv 於 2005/10/19 14:47:56
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-19 15:37:11 IP:218.94.xxx.xxx 未訂閱
是这样的问题,可能是delphi断点监视Bug造成的吧! > 风花雪月
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-19 17:55:33 IP:221.226.xxx.xxx 未訂閱
Logv兄,你怎么知道我是未测试就回答的,既然肯花时间修改你的代码,代表我已经做了测试。 我的品台是公司的,正版D7,测试没有问题。 你的语气实在没法接受,我是来回答你的问题的,怎么感觉好像你是来教育我的? 相信这里每个人回答问题前都会仔细测试一下,因为回答就是要对提问者负责,而且我已经在第一句就说明了“这种情况除非你机器或DELPHI有问题”,你觉得呢?
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-10-19 18:26:43 IP:210.65.xxx.xxx 未訂閱
Hi logv,    我猜測應該是 Compile 時自動 Optimization 掉了,將    [Project]->[Option]->[Compiler]->[Optimization] 選項勾選掉,再重新 Compile 後即可正常了    Hi Vicen,    別動怒,你將 ShowMessage 指令拿掉,並如 logv 所言設置中斷點,即可發現問題!     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-10-19 19:40:14 IP:222.248.xxx.xxx 未訂閱
的確,把Optimization優化選項去掉後就正常了。 ---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 ---------------------------
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-10-19 20:09:30 IP:221.226.xxx.xxx 未訂閱
是的,THX Fishman兄,可能是我太激动了,我的Optimization选项的确没有勾选,勾选后的确发现这个问题。可能因为安装监控内存泄漏测试工具时,要求把Optimization选项勾去的原因。 先前多有失言,请多见谅。 發表人 - vicen 於 2005/10/19 20:15:46
logv
一般會員


發表:5
回覆:22
積分:10
註冊:2004-03-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-10-20 08:28:17 IP:61.187.xxx.xxx 未訂閱
问题解决,谢谢各位
系統時間:2024-04-16 22:56:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!