var
  i, j, jj : integer;
begin
  for i := 0 to 10 do
  begin
    for j := 0 to 10 do
    begin
      if (j = 5) then
        break;
      jj := 5;
    end;
  end;
end;
在break,jj := 5这两行设断点都无效!
改成:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
begin
  for i := 5 to 10 do
    for j := 0 to 10 do
      if (j = 5) then
        break;
end;
后,在break处断点有效,可是此时i的值竟然为6!如果这么赋初值i:=0,则在break处j=5,i=11!以上值都是将鼠标移动到i,j上得到的。

解决方案 »

  1.   

    可以现在不能用delphi.  关注!
      

  2.   

    故弄玄虚!看你们这类的人就生气,成天叫什么bug,bug的,不明白老老实实的问,为什么总成天叫什么bug,bug的!这是优化的结果,第一段那个写法弱智的循环体  jj := 5;delphi会把它优化掉的。你把delphi中的优化选项关掉!
      

  3.   

    To:pazee(耙子) 
    呵呵,我的问题是“Delphi的Bug吗?”,表达疑问(正是“不明白老老实实的问”),怎么得到“故弄玄虚”这么一顶大帽子?
    不过还是谢谢,确实如你所说。
      

  4.   

    那你可以问“调试中奇怪的问题!为什么?”为什么偏要怀疑delphi,而不怀疑是自己不知道呢?