如何较验集合类型字符!由于某种特殊需求,我在SQL Server数据库中将日期用字符串来存储。
现在我想写一函数来验证某一记录的日期型字段是否符合日期字符串格式,如'2005-11-10'。
如果不是则返回False,否则返回True。
我的程序片段如下
function ValidDateStr(varDate :string) :boolean ;
type
  NumSets = set of Char ;
var
  NumSet :NumSets ;
  aaa :string;
begin
  NumSet :=['0','1','2','3','4','5','6','7','8','9',' '] ;  if Copy(varDate,1,1) in NumSet then   
    Result :=True 
  else
    Result :=False ; 
end ;  可是上面的语句if Copy(varDate,1,1) in NumSet then 是类型不兼容,
因为前面是String ;后面是Char;
我想问问各位大侠,采用什么方法或函数可以解决此问题?谢谢!
我不想采用类似如下这样的语句:  if     (Copy(varDate,1,1) = '0') or (Copy(varDate,1,1) = '1') or (Copy(varDate,1,1) = '2') or
         (Copy(varDate,1,1) = '3') or (Copy(varDate,1,1) = '4') or (Copy(varDate,1,1) = '5') or
         (Copy(varDate,1,1) = '6') or (Copy(varDate,1,1) = '7') or (Copy(varDate,1,1) = '8') or
         (Copy(varDate,1,1) = '9') or (Copy(varDate,1,1) = ' ') then

解决方案 »

  1.   

    if Copy(varDate,1,1) in NumSet then
    改为:
    if Copy(varDate,1,1)[1] in NumSet then
      

  2.   

    //判断日期时间部分是否为正确的日期时间格式
    function ValidDate(Const strDateTime: String): Boolean;
    begin
      try
        StrToDate(strDateTime);
        Result:=True;
      except
        Result:=False;
      end;
    end; 
      

  3.   

    回复人: clasj(我蛮怀) ( ) 信誉:100  2005-11-11 11:14:16  得分: 0  
     
    if Copy(varDate,1,1) in NumSet then
    改为:
    if Copy(varDate,1,1)[1] in NumSet then
    再改为
    Result := varDate[1] in NumSet;
      

  4.   

    楼上的方法不错,不过还应该检查一下日期的范围为妥-----------------
    行舟
    欢迎使用CSDN论坛浏览器
    http://blog.csdn.net/xingzhou/
      

  5.   

    另外,用StrToDateDef更好,异常都免了,调试更方便-----------------
    行舟
    欢迎使用CSDN论坛浏览器
    http://blog.csdn.net/xingzhou/
      

  6.   

    kao,我写给你方法,keiy帮我顶,他有分,我却没分?!什么世道啊!