Delphi中输入年、月、日及润年平年的判断

博客给出了一段Delphi代码,定义了一个名为checkDateEX的过程,用于检查输入日期的合法性。代码会对年、月、日进行判断,若日期不合法,如年份小于1930、月份不在1 - 12之间等,会提示重新输入并将焦点设置到输入框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

procedure TfrmMain.checkDateEX(edt: Tmaskedit);
var
  iyear, imonth, iday: word;
begin
  if edt.Text <> '    -  -  ' then
  begin
    iyear := strToint(copy(edt.Text, 1, 4));
    imonth := strToint(copy(edt.Text, 6, 2));
    iday := strToInt(copy(edt.Text, 9, 2));
    if (iyear < 1930) then
    begin
      showmessage('非法日期,请重新输入!');
      edt.SetFocus;
      exit;
    end
    else
    begin
      if (imonth < 1) or (imonth > 12) then
      begin
        showmessage('非法日期,请重新输入!');
        edt.SetFocus;
        exit;
      end;
      if imonth = 2 then
      begin
        if ((iyear mod 4) = 0) or ((iyear mod 100) = 0) then
        begin
          if (iday > 29) or (iday < 1) then
          begin
            showmessage('非法日期,请重新输入!');
            edt.SetFocus;
            exit;
          end;
        end
        else
        begin
          if (iday > 28) or (iday < 1) then
          begin
            showmessage('非法日期,请重新输入!');
            edt.SetFocus;
            exit;
          end;
        end;
      end
      else if (imonth = 1) or (imonth = 3) or (imonth = 5) or (imonth = 7) or
        (imonth = 8) or (imonth = 10) or (imonth = 12) then
      begin
        if (iday > 31) or (iday < 1) then
        begin
          showmessage('非法日期,请重新输入!');
          edt.SetFocus;
          exit;
        end;
      end
      else
      begin
        if (iday > 30) or (iday < 1) then
        begin
          showmessage('非法日期,请重新输入!');
          edt.SetFocus;
          exit;
        end;
      end;
    end;
  end;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值