728x90
반응형
문자열(string)을 날짜형식(TDateTime)으로 변환할 경우가 많은데, 특정 PC에서만 다음과 같이 형식이 올바르지 않다는 오류가 발생하는 경웅가 있습니다.
날짜 형식에 문제가 없는 문자열임에도 불구하고 나는 오류라 살짝 당황스러울 수 있는 부분이나, 이는 사용자 PC의 국가 및 언어설정이 일반 PC와는 조금 다르게 설정되어 있기 때문입니다. 제어판에 보면 "국가 및 언어설정"을 설정하는 부분이 있는데, 이곳에 날짜 구분자가 일반적으로는 하이픈("-")으로 되어 있지만, 위 문제가 발생한 고객의 PC에서는 필요에 의하여 다른 문자로 변경되어 있는 경우, StrToDateTime 함수 호출시 위 그림과 같은 오류가 발생하게 됩니다.
일반적으로 간단한 날짜 형식이 "yyyy-MM-dd"로 되어 있는데, 위 그림과 같이 "yy'.'MM'.'dd'. ('ddd')'"형식으로 되어 있어서 일반적인 날짜 형식의 문자열이 제대로 변환되지 못합니다.
이 문제의 해결 방법은 두 가지를 생각해 볼 수 있습니다. 첫 번째 방법은 "국가 및 언어"에서 날짜 형식을 원래대로 되돌리는 겁니다. 그러나 이렇게 하면 사용자가 원하는 날짜 형식으로 보던걸 바꿔 버리므로 바람직하지 않은 방법입니다.
두 번째 방법은 델파이 프로젝트에서 최초 실행되는 유닛의 실행부에 다음과 같은 코드를 삽입하여 날짜 구분 기호가 하이픈("-")임을 강제로 설정하는 방법이 있습니다. 이렇게 하면 사용자가 원하는 형태대로 확인할 수 있고 날짜 형식 변환에도 오류가 없어집니다.
DateSeparator := '-';
날짜 형식에 문제가 없는 문자열임에도 불구하고 나는 오류라 살짝 당황스러울 수 있는 부분이나, 이는 사용자 PC의 국가 및 언어설정이 일반 PC와는 조금 다르게 설정되어 있기 때문입니다. 제어판에 보면 "국가 및 언어설정"을 설정하는 부분이 있는데, 이곳에 날짜 구분자가 일반적으로는 하이픈("-")으로 되어 있지만, 위 문제가 발생한 고객의 PC에서는 필요에 의하여 다른 문자로 변경되어 있는 경우, StrToDateTime 함수 호출시 위 그림과 같은 오류가 발생하게 됩니다.
일반적으로 간단한 날짜 형식이 "yyyy-MM-dd"로 되어 있는데, 위 그림과 같이 "yy'.'MM'.'dd'. ('ddd')'"형식으로 되어 있어서 일반적인 날짜 형식의 문자열이 제대로 변환되지 못합니다.
이 문제의 해결 방법은 두 가지를 생각해 볼 수 있습니다. 첫 번째 방법은 "국가 및 언어"에서 날짜 형식을 원래대로 되돌리는 겁니다. 그러나 이렇게 하면 사용자가 원하는 날짜 형식으로 보던걸 바꿔 버리므로 바람직하지 않은 방법입니다.
두 번째 방법은 델파이 프로젝트에서 최초 실행되는 유닛의 실행부에 다음과 같은 코드를 삽입하여 날짜 구분 기호가 하이픈("-")임을 강제로 설정하는 방법이 있습니다. 이렇게 하면 사용자가 원하는 형태대로 확인할 수 있고 날짜 형식 변환에도 오류가 없어집니다.
DateSeparator := '-';
'프로그래밍 > 델파이' 카테고리의 다른 글
Crypt32의 CryptProtectData, CryptUnprotectData 사용 예 (0) | 2011.04.11 |
---|---|
[Component] Vampyre Imaging Library (0) | 2011.02.22 |
정렬된 TStringList의 Add와 Find에 대하여... (2) | 2010.11.22 |
유니코드용 InnoSetup으로 만든 설치 프로그램에 ActveX를 통한 설치시 먹통이 되는 문제 (0) | 2010.08.30 |
XML 파일에 CDATA 노드 만들기 (0) | 2010.07.25 |