Q&A

  • 날자 유효성 검사를 어떻게 해야 하는지 알려주세요...
안녕하세요..

델파이 초보 입니다.(버전 6.0)

마스크 에디터로 입력 받은 날자의 유효성을 검사 하려고 합니다.

그런데.. 생각 처럼 잘 되지 않습니다..

고수님 도와 주십시요..

procedure start
var
s_date : Tdate ;
s_datetime : TDateTime ;
begin
  try
    s_date       := StrToDate(MaskEdit1.Text) ; <-- 에러 입니다.. 흠..
    s_datetime := StrToDateTime(MaskEdit1.Text) ; <--  이것두 에러 입니다.
  except
    shomessage('일자가 틀렸습니다.') ;
  end;
end ;
1  COMMENTS
  • Profile
    홍성락 2002.10.12 08:19
    '유효성을 검사'라면 잘못된 것을 찾으라는건가요.
    예로 2월 31일이라는것은 잘못된 날짜라느거요...
    아래것 try ~ except 도 괜찮은데요. 실행시는 에러메세지는 안뜨잖습니까.
    아니면 함수로 MaskEdit포멧이 !9999/99/00;1;_ 일경우
    function OK_Date(SDate: string): Boolean;
    var
       Year, Month, Day: integer;
       DayTable: PDayTable;
    begin
       Result := True;
       try
          Year := StrToInt(copy(SDate,1,4));
          Month:= StrToInt(copy(SDate,6,2));
          Day  := StrToInt(copy(SDate,9,2));
          DayTable := @MonthDays[IsLeapYear(Year)];
        if not((Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
           (Day >= 1) and (Day <= DayTable^[Month])) then begin
           Result := False;
         end;
       except
         Result := False;
       end;

    end;
    procedure TForm1.Button8Click(Sender: TObject);
    var
    s_date : Tdate ;
    s_datetime : TDateTime ;
    begin
      if not OK_Date(MaskEdit1.Text) then exit;
      try
        s_date       := StrToDate(MaskEdit1.Text) ; //<-- 에러 입니다.. 흠..
        s_datetime := StrToDateTime(MaskEdit1.Text) ; //<--  이것두 에러 입니다.
      except
        showmessage('일자가 틀렸습니다.') ;
      end;
    end;

    hsr///////////////////////////////////////////////////////