try
  edit1.Text := formatdatetime('yyyy-mm-dd',StrToDate(edit1.text));
except
  edit1.text := '';
  edit1.setfocus;
end;
   上面的程序在delphi中调试的时候不能通过,但是编译以后就可以执行。不知所以然??再就是请用术语说明一下上面的程序try.....except...谢谢各位学长!!

解决方案 »

  1.   

    我试着写了一下,很正常啊try           //将Edit1中的年月日格式化为yyyy-mm-dd,
      edit1.Text := formatdatetime('yyyy-mm-dd',StrToDate(edit1.text));
    except  //如果不能正常完成格式化,如我将日期该为2003-0-14
            //这时在Delphi中将跳出对话框,在编译以后就很正常了。这就是你说的不对的地方  ShowMessage('时间格式不对!');  //可加一个对话框提示时间格式不对
      edit1.text := '';  //Edit1清空
      edit1.setfocus;  //Edit1获得输入焦点
    end;
      

  2.   

    try...except...end
    我觉得很多时候都是F9时出错,编译以后直接运行编译的文件没有问题
      

  3.   

    在delphi中有一个异常链,最初的异常多半是由系统抛出,然后层层传递知道发现有处理它的
    代码,如果没有就显示系统的警告框。但是在调试环境中的时候,为了调试方便会先显示系统的异常,然后再交由你的程序处理
      

  4.   

    我在Project->options->compiler中把所有的系统异常去掉也不行呀,根本就不执行except后面的语句。
      

  5.   

    你输入的时候输入非法的日期格式就能执行了
    比如输入abcd
      

  6.   

    对啊!就象我上面说的将日期改为2003-0-14,就会出现Edit清空了.
      

  7.   

    我写的完整代码: 加入Edit1,Button1,Timer1unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        Timer1: TTimer;
        Edit2: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    try
      edit1.Text := formatdatetime('yyyy-mm-dd',StrToDate(edit1.text));
    except
      showmessage('时间格式不对!!');
      edit1.text := '';
      edit1.setfocus;
     end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.Text:=datetostr(now);
    end;end.except后面的语句是它前面的语句不能被正常执行后才会被执行的.
      

  8.   

    try
      //嘗試執行這里的語句
    except
     //如果嘗試語句不能執行成功(產生了異常),執行這里的語句
    end;try
      //嘗試執行這里的語句
    finally
      //無論成功與否,都要執行這里的語句
    end;
      

  9.   

    是在不行就tryexceptelseend;
      

  10.   

    因为你的文本框中输入的数据类型不是整形,所以在调试时会有异常,但在外部执行时,由于你用了try...except...end,所以错误被屏蔽了。
      

  11.   

    try
     ...
    except
      On [你在运行时见到的错误代号,如:EMemoryOverfollow] do
      begin
        出了这种异常怎么办的代码.
      end
      else
        其它异常处理
    end;
      

  12.   

    to:liumengchuan
       您批评的很对,小弟会再用功的!!