在delphi一个对数据库的基本查询的操作中,其中complaint表中有一个叫Cdate的yyyy-mm-dd的日期型字段。现在edit中输入日期(但格式不一定正确)要求查询日期所属的记录。请问一下有没有在查询前能判断输入的格式是否为正确的日期型。

解决方案 »

  1.   

    你可以用strtodate(),如果不报异常,就说明是正确的
      

  2.   

    你说的根本是行不通的。比如说你在edit中输入“11111”,当碰到strtodate函数时,程序就会中止了,因为碰到了异常。试问在这种情况下,程序如何去判断。
      

  3.   

    s:=formatdatetime('yyyy-mm-dd',strtofloat(edit1.text));事先将它格式化好得了。
      

  4.   

    你就在try...except...里面catch一下就知道格式正确与否了。尽管不大好。
      

  5.   

    RamjetZhang
    可以写一点代码吗??我原来试过,但还是会了错。。edit中什么样的字符都可以输,或者输入1999-13-23都是错误情况,但是我不能catch到这个错误,只是系统自动弹出的错误信息。我是希望能在错情况下,弹出一个对话框,提示用户输入有误。
      

  6.   

    当一执行程序,输入错误的非日期型数据时,系统弹出Debugger Excpeption Notification错误信息框,说明不是一个有效的日期。请问如何不让系统产生,而是程序中自已捕获,弹出对话框提示输入有误呢
      

  7.   

    function isValidDate(Str:String):boolean;
    begin
    result:=true;
    try
      StrToDate(Str);//尝试转换为日期型数据。
    except
      result:=false;//如果出错则证明日期是非法的。
    end;
    end;调用例子:
    if isValidDate('2003-1-1') then
      ShowMessage('是合法的日期!')
    else
      ShowMessage('错误,日期格式错误!');//基本原理同上,用Delphi的异常处理机制。
      

  8.   

    try
      StrToDate(edit1.text);
    except
      edit1.text := Date; //或者edit1.text := ''
    end;
      

  9.   

    如果你要在调试时避免出现错误信息,则需要设置如下选项:
    Tools->Debuger Options->Language Exceptions里,取消最下面的Stop On Delphi Exceptions一项。
      

  10.   

    像在VB里有一个函数isdate可以专门判定,在delphi里有没有呢
      

  11.   

    同意lEFTmOON(走哪学哪,不懂就问) 和 pilicat(delphi迷)的观点
      

  12.   

    我用delphi做了一个web应用程序,分发到虚拟目录下,生成一个dll文件,但为什么浏览器打不开它呢????
      

  13.   

    日期格式是可以在注册表里找到的,不知道格式建议可以用FORMATdATEtIME函数