try
  edit1.Text:=FormatDateTime('YYYY-MM-DD',StrToDate(edit1.Text));
except
  show('请输入一个日期型值!');
end;

解决方案 »

  1.   

    try
      edit2.Text:=FormatDateTime('YYYY-MM-DD',StrToDate(edit1.Text));
    except
      show('请输入一个日期型值!');
    end; 
      

  2.   

    我觉得用日期的格式来判断还是会出现日期不合法而认为合法的错误,
    不如:2001-10-35,所以,我觉得日期输入最好用DateTimePicker控件来处理
      

  3.   

    同意 V-lucky的说活,因为日期格式也有好几种,而且,如上边那样,并非是一个正真的检查
      

  4.   

    try
      StrToDateTime(Edit1.Text);
    except
      show('请输入一个日期型值!');
    end;
     
      

  5.   

    我是不想让那个异常错误窗口出来,而是出现我要显示的窗口?
    比如我的edit1 中输入如下:‘2001-13-27 30:24:05’我想先判断是不是日期类型再转换:
    如果我用
    try
      StrToDateTime(Edit1.Text);
    except
      show('请输入一个日期型值!');
    end;
    则还是会出来那个delphi自身的异常错误窗口,
    我是想在那个异常错误窗口不要出来。。
      

  6.   

    //怎么不看看我的
    //失败
    var
      vDate: TDateTime;
    begin
      if TryStrToDate(Edit1.Text, vDate) then
       ShowMessage('请输入一个日期型值!');
    end;
      

  7.   

    to zswang(伴水)(伤心中) 
    你写的TryStrToDate(Edit1.Text, vDate) 是函数吗,帮助中怎么没有
      

  8.   

    to aliyan(琳琳)
    我是不想让那个异常错误窗口出来,而是出现我要显示的窗口?
    比如我的edit1 中输入如下:‘2001-13-27 30:24:05’我想先判断是不是日期类型再转换:
    如果我用
    try
      StrToDateTime(Edit1.Text);
    except
      show('请输入一个日期型值!');
    end;
    则还是会出来那个delphi自身的异常错误窗口,
    我是想在那个异常错误窗口不要出来。。
    那么就试试这段吧
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      Ebaderror=class(exception);
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure OppeventMainException(sender:Tobject;E:Exception);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
    raise Ebaderror.Create('试一试了');end;end;
    procedure OppeventMainException(sender:Tobject;E:Exception);
    var
      rslt:boolean;
    begin
      if E is  Ebaderror then
       rslt:=messagedlg(format('%s %s, %s, %s,%s',['An',E.classname,'写你自己的错误处理办法吧',E.message,'是否想退出应用程序?']),mterror,[mbyes,mbno],0)=mryes;
       if rslt then
         application.Terminate else
         application.ShowException (E);end;end.
      

  9.   

    别忘了
    uses
      appevnts呀