Maskedit에서 날짜 형식으로 하고서
날짜 체크를 하는데요...
예를 들어서
2001/01/28
이렇게 되야 정상인데 만약
200 /01/08
이렇게 되면 에러메세지가 떠야 하는데...
함수를 썼어도 잘 되지를 않네요...
년도하고 가끔 월만 되구요...
또 위같은 경우 뿐만 아니라
2000/ 1/08
20 /1 / 8 등등등
잘못 입력했을 경우가 많은 경우가 있는데...
어찌하면 좋을까요~~
좋은방법이없을까요...
Maskedit 말고 그냥 Edit도 맞는지...
답변 부탁합니다...
> Maskedit에서 날짜 형식으로 하고서
>
> 날짜 체크를 하는데요...
>
> 예를 들어서
>
> 2001/01/28
>
> 이렇게 되야 정상인데 만약
>
> 200 /01/08
>
> 이렇게 되면 에러메세지가 떠야 하는데...
>
> 함수를 썼어도 잘 되지를 않네요...
>
> 년도하고 가끔 월만 되구요...
>
> 또 위같은 경우 뿐만 아니라
>
> 2000/ 1/08
> 20 /1 / 8 등등등
>
> 잘못 입력했을 경우가 많은 경우가 있는데...
>
> 어찌하면 좋을까요~~
>
> 좋은방법이없을까요...
>
> Maskedit 말고 그냥 Edit도 맞는지...
>
> 답변 부탁합니다...
안녕하세요.
아직제가 초보라^^; 참고하실수 있으리라 믿구 올려봅니다.
Maskedit 는 /가 잘 안먹네요.
그리고 일수 같은경운 달마다 틀리니 더 자세히 하실려면
달에 따라 일수를 계산하시면 될겁니다.
그럼 20000.
function TForm1.NumCheck( sData : String ) : Boolean;
var
i : Integer;
bResult : Boolean;
begin
// ASC Code 값
// '/' = 47 '0~9' = 48 ~ 57
for i := 1 to 10 do
begin
if ( ( Ord( sData[ i ] ) >= 47 ) and ( Ord( sData[ i ] ) <= 57 ) ) then
begin
if Ord( sData[ i ] ) = 47 then
begin
if ( i = 5 ) or ( i = 8 ) then bResult := True
else begin
bResult := False;
Break;
end;
end else begin // '/' 위치 검색.
if ( i = 5 ) or ( i = 8 ) then
begin
bResult := False;
Break;
end else begin
if i > 5 then // 월, 일수 비교.
begin
if ( ( StrToInt( Copy( sData, 6, 2 ) ) >= 1 ) and ( StrToInt( Copy( sData, 6, 2 ) ) <= 12 ) ) and
( ( StrToInt( Copy( sData, 9, 2 ) ) >= 1 ) and ( StrToInt( Copy( sData, 9, 2 ) ) <= 31 ) ) then
bResult := True
else begin
bResult := False;
Break;
end;
end;
end;
end;
end else begin
bResult := False;
Break;
end;
end; //for
Result := bResult;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Numcheck( Edit1.Text ) then ShowMessage( '입력 확인' )
else ShowMessage( '입력이 틀렸습니다.' );
end;