一、用一个TDBedit控件和一表中的日期型字段mydate相联后,如果输入不为日期型,就会触发异常,现我想将之换成自已的提示信息,如何作?
  例:我输入1234567,系统会提示Its not  a valid date,ECovertExcepton
      事实上我输入2001/12/01也会错,为什么?
  有什么方法能达到发现错误并给出自己的提示,并使其重新输入?二、一表中有一字符型字段myno,我想要输入六位数字,不能多也不能少。用在对应的TTable中的TField字段中设置editmask的方法实现,屏蔽字为000000;1;#,则当我输入12345时,相应的TDBedit失去焦点时会触发异常(因为这时只有5位,不满足屏蔽条件),DElphi帮助说应在TField的Onvalidlate事件中处理。如何处理?急用,请高手帮忙。

解决方案 »

  1.   

    一。你可以在代码中写出自己的异常处理程序来屏蔽系统异常,就是在你的代码中加TRYEXCEPT语句。并且在语句中显示自己定义的异常信息。
      

  2.   

    1.关于日期和数据库关联的问题,可以用ip3000控件解决,用tdbedit很不好控制.
    2.这个也不好控制,用tdbedit不是很好,但是开发速度很快,如果要做好的应用程序,建议用tedit,可以自己控制,也可以用第三方控件.因为数据敏感构件实在是太敏感了
      

  3.   

    一。你输入2001-12-01试试呀!
    你可以代码中写出自己的异常处理程序来屏蔽系统异常,就是在你的代码中加TRYEXCEPTend;
    语句。并且在语句中显示自己定义的异常信息
      

  4.   

    tdbedit现在一般不用,如果你仅仅是用来显示的话,还可以,用来输入则不行,
    其实你就用sql语言来实现,在程序中还好控制,写起来也不麻烦,何苦非要用tdbedit来做呢?
      

  5.   

    在数据库开发方面用try来接收异常是很好的办法,推荐使用!
      

  6.   

    我使用的代码段是
    try
           d:=strtodate(s);
           Myjudge:=true;
        except
         on EConvertError do
           begin
            showmessage('Test');
            Myjudge:=false;
           end;
        end;当我输入为合法格式时(如2001-12-1),没问题,可输入非法时,上面的异常由系统捕捉了,我根本抓不到。
      

  7.   

    运行你生成的exe文件应该就可以捕获得住了。
      

  8.   

    1.输入的时间格式:yyyy-mm-dd
    2.不用屏蔽字,用一个很简单的程序来控制:
    var
    i:int;
    for i:=0 to 5
    begin
    if length(trim(edit.text)) then
    edit.text='0'+edit.text;
    end;
    3.TRY
    ...
    EXCEPT
    ....
    end;
    可以帮助你处理异常。
      

  9.   

    你把debug options的default ..给勾掉
      

  10.   

    用try...except捕获的关键在于,在什么时候捕获?
    我试过,在onexit事件中捕获根本不行.