unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var x,y,z
:integer;
begin
y:=0;
x:=1;
try
z:=x div y;
except on errorinstance:edivbyzero do
messagedlg(errorinstance.message,mtinformation,[mbok],0);
end;end;end.
运行后,怎么没有信息弹出啊?

解决方案 »

  1.   

    你定义的z并没有使用过,我想应该是delphi的编译器认为后面的语句没有用处。
    你在最后加一句showmessage(inttostr(z))试试
      

  2.   

    出现异常后,为什么它不执行except 后面的语句呢?
    有一变量没有用过就不执行后面的语句了么?
      

  3.   

    实际上,z:=x div y;这一句根本就没有执行,编译时被忽略了。
    算出来z,并没有用到,为什么要算?
    其实,你编译完了以后,可以看见z:x div y这一句的左边没有小蓝点,表示这一句不会执行。
      

  4.   

    加一句showmessage(inttostr(z))就OK了procedure TForm1.Button1Click(Sender: TObject);
    var
      x,y,z :integer;
    begin
      y:=0;
      x:=1;
      try
        z:=x div y;
      except on errorinstance:edivbyzero do
        messagedlg(errorinstance.message,mtinformation,[mbok],0);
      end;
      showmessage(inttostr(z));
    end;
      

  5.   

    知道了,但是我在do 语句后面再加上z:=1;运行的时候为什么会自动关闭form呢?procedure TForm1.Button1Click(Sender: TObject);
    var x,y,z
    :integer;
    begin
    try
    x:=0;
    y:=1;
    z:=y div x;
    except on errorinstance :edivbyzero do
    begin
    messagedlg('='+errorinstance.message,mtinformation,[mbok],0);
    z:=1;
    end;
    end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      x,y,z :integer;
    begin
      y:=0;
      x:=1;
      try
        z:=x div y;
        Form1.Tag:=z;
      except on errorinstance:edivbyzero do
        messagedlg(errorinstance.message,mtinformation,[mbok],0);
      end;
    end;
      

  7.   

    hotforever(大哥)
    我运行你的程序不会关闭窗体。
    而且,你在do 语句后面再加上z:=1;没有用啊。z还是没有用处。
    z:=x div y还是不会执行。