delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
为什么我的日期判断得不到想要的结果 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061221141022214.html
我做了一个判断日期的函数  
  //判断字符串是否是有效日期类型  
  function   isdate(s:string):boolean;  
  begin  
    result:=false;  
  try  
      strtodate(s);  
      result:=true;  
  except  
      on   econverterror   do  
      result:=false;  
  end;  
  end;  
   
  procedure   TForm2.Button1Click(Sender:   TObject);  
  begin  
  if   isdate(trim(edit1.Text))   =   false   then  
      begin  
          MessageDlg('日期输入不正确!',   mtWarning,   [mbOK],   0);  
          exit;  
      end;  
  end;  
  当调用返回时总是先弹出系统提示的错误:project   project2.exe   raised   exception   class   econverterror   with   message   "edit1'is   not   a   valid   date'.  
  process   stopped.use   step   or   run   to   contiue.  
  点击ok按钮后才弹出MessageDlg('日期输入不正确!',   mtWarning,   [mbOK],   0);  
  为什么不直接弹出这个提示?郁闷!!。。。。

你的另一贴:  
  http://community.csdn.net/Expert/topic/5246/5246644.xml?temp=.3406488  
 

正常啊,当你在IDE的调试环境运行时会在except   捕获之前Delphi给你个提示  
   
  不在开发环境中运行不会有这个提示滴  
   
  直接跑.exe试试看吧。。

这样比较通用,运行效果以直接运行exe为准  
  function   isdate(s:string):boolean;  
  begin  
    result:=false;  
  try  
  ///////  
      VarToDateTime(s);  
      result:=true;  
  except  
      on   econverterror   do  
      result:=false;  
  end;  
  end;  
 

调试状态才会出现这样的提示,运行时是根据你的异常处理来处理的.

试试我吧  
   
  var  
      TmpDate:   TDateTime;  
  begin  
  方法一:  
      TmpDate:=   StrToDateDef(   Edit1.Text,   0   );  
  方法二:  
      TmpDate:=   0;  
      if   TryStrToDate(   Edit1.Text,   TmpDate   )   then  
   
  end;

posted on 2009-01-04 16:52 delphi2007 阅读(193) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。