procedure TMainForm.btnMakeClick(Sender: TObject);
var
Year, Month, Day : Word;
tmpTime : TDateTime;
begin
Year := StrToInt(cboYear.Text);
Month := StrToInt(cboMonth.Text);
Day := StrToInt(cboDay.Text);
try
tmpTime := EncodeDate(Year, Month, Day);
except
on EConvertError do
begin
ShowMessage('잘못된 날짜를 선택하셨습니다!');
exit;
end;
end;
end;
이러한 소스가 있고요..
콤보박스에서 선택된 것은
Year는 1900년 Month는 2월 Day는 31일을 선택했고요..
이에 따른 에러때문에 예외처리까지 해주었는데요..
Run을 하면 자꾸 메세지가 뜨더라구요..
그래서 Debugger Options -> Language Exceptions탭에서
Stop on delphi Exceptions체크박스의 체크를 지우니까 잘되더라구요..
궁금한것은 체크하고 했을때와 체크하지 않고 했을때의 차이점을 알고 싶습
니다.. 그리고 체크하지 않고 컴파일해도 상관없는지 알고싶습니다..
var
w_year,w_month,w_day : word;
begin
Result := False;
strDate := Trim(strDate);
if length(strDate) = 8 then
begin
w_year := strToint(Copy(strDate,1,4));
w_month := strToint(Copy(strDate,5,2));
w_day := strToint(Copy(strDate,7,2));
Result := isValidDate(w_year,w_month,w_day);
end;
end;
님처럼 코딩을 하셨다면 컴파일후 실행파일을 실행했을때는 에러가 없을것입니다. 하지만 델파이 내부에서 디버그 모드로 실행을 하면 에러메시지가 나타납니다. EXCEPTION처리를 했다지만 일단 에러처리하기전에 이미 EncodeDate함수에서 발생한 에러 메시지를 띄우고 그 다음에 사용자가 지정한에러메시지를 한번더 보여주는 거죠..
체크를 않고 컴파일하고 실행해도 상관 없겠지만 컴파일시 발생할수 있는
에러에 대해서 모르고 넘어가게 될수도 있을거 같은데요..^^;
위에 함수는 날짜 오류검사를 위해서 제가 사용했던 함수입니다.