一个form上放了个button,代码如下,编译点button,程序11111111111处的showmessage,是不是我的delphi还有什么没设置好的呢?
99我
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c : integer;begin
a := 10;
b := 10;
c := 0;try
        a := b div c;
except
        showmessage('123123');//1111111111111
end;end;

解决方案 »

  1.   

    showmessage('123123');这一句就根本不执行了!!
    打掉几个字了
      

  2.   

    哈哈,不知道为什么,修复安装一下Delphi试试看?
      

  3.   

    我KAO,ShowMessage要有大写,:)
      

  4.   

    我试过,在我的开发环境中也不会出现这个异常。
        不过,如果在下面加上一句
        Label1.Caption:=inttostr(a);
        就会出现异常。
        估计是因变量a在后面没有使用,故编译器优化后没有对a:=b div c 进行运算。
      

  5.   

    Fangyuanshan() 说的有道理。
      

  6.   

    这。showmeessage还有要大写的????
    我把它写成这样:sHoWmEsSaGe都没问题啊
      

  7.   

    对了
    a := b div c;
    被编译优化掉了,这属于无效运算
      

  8.   

    但是我在 最后加了一条 showmessage(inttostr(a));后
    showmessage('123123');终于可以执行了
    你们猜,接下来的输出是什么?
    是10啊,为什么会这样?
    还有一种情况是把程序改为;
    .......
    try
            a := b div c;
     showmessage(inttostr(a));//00000000000000
    except
     showmessage('123123');//1111111111111
    end;
    两处的showmessage都执行了
      

  9.   

    这好象说不过去啊?
    那为什么在后面加了个showmessage(inttostr(a));就可以做异常处理了呢?
    难道编译器在发现后面的错误后,再反过头来又检查程序么?
    好想不是这样啊
      

  10.   

    我在别的地方用异常处理,也是这样的,既不报错也不出理!!
    这到底是什么原因啊,不会是由于我的机器有本身的问题吧
    我装的win2k  advanced server,机器有两个cpu
      

  11.   

    从现象来看,当没有使用变量a时,a := b div c;这一句被优化时忽略掉了,
    当要使用a时,就不能忽略,所以产生异常。to xill(叶柄) :
    编译的结果是保存下来的了
      

  12.   

    在Delphi中编译完后单独运行,应该就不会出现了吧。
      

  13.   

    现在出现了新问题!
    问题是可以得到解决,但是治标不治本啊!
    procedure TForm1.Button1Click(Sender: TObject);
    var a,b,c : integer;begin
    a := 10;
    b := 10;
    c := 0;try
            a := b div c;
            a := b div c;//再加一个就会处理了!
     
    except
            showmessage('123123');//1111111111111
    end;end;
      

  14.   

    to  xill(叶柄)
       你真是个好学的好孩子!
       不知你所说的治标不治本是何意思?如果编译器因为编译时发现你后面没有使用变量a,因此没有对a:=b div c进行编译。正常情况下,你会在后续的代码中使用变量a。这里何来不治本的问题?
      

  15.   

    要不用ASM实现asm
      PUSH EAX
      PUSH ECX
      MOV EAX, b
      MOV ECX, c
      CDQ
      IDIV ECX
      MOV A, EAX
      POP ECX
      POP EAX
    end;
      

  16.   

    编译以后代码前面加了兰点的就是有意义的代码,否则就是废代码(一些控制语句begin end else除外).你的全是废代码
      

  17.   

    嘿嘿兄弟,你要生成EXE文件后就没有问题了你在DELPHI开发环境中运行还当然是不会执行下面的那 showmessage()语气的