안녕하세요 메르세데스입니다. 프로그램 개발 중.. 정말 별것 아니지만.. 난관에 부딛쳤습니다.
제가 끙끙 앓고 있는 문제는.. 시간 표현의 문제인데요.. 벌써 델파이는.... 8년째 하고 있긴 한데.. 기초가 부족하네요 ㅜㅜ
몇 시간 동안 나름대로 고민하고 어찌 되었든 해결이 되어서 혹시 모르지만.. 저처럼 고생하고 계신 분이 혹시? 계실지 몰라 공유하고자 합니다...
경우에 따라.. datetime을 24시간제로 표현하고자 할 때가 분명 있습니다. 이런 표현이면.. 구지 변환을 하지 않고 db에 insert든 update든.. 하기 편해지고.. 무엇보다.. 그렇게 표현을 원하시는 고객이 있다면 물론 그렇게 해야겠죠..;;
하지만.. 그동안 별 신경을 안 쓰고 진행을 하다가... 오전에 개발한 소스를 이어서 나가려고 오후에 테스트를 해봤더니 난데없이 MaskEdit에 이상한 값이 들어오네요.. 오전엔 분명 안 그랬거든요!!
오전과 오후의 표현방법은.. 내 컴퓨터의 설정과 관련이 있는 것 같습니다.. 있잖아요..? 제어판의 국가별언어옵션에.. time표현식을요.. 그동안 이런 설정을 간과하고 진행을 하다가.. 이러면 정말 안될 것 같아 손을 보기로 하였습니다.
서버의 time값을 받아오기 때문에 시간차의 문제는 없지만.. 지금의 문제는.. 이렇게 받아온 time을 해당 컴퓨터에서 표현할 때마다 해당 pc의 설정에 따라 달라지게 된다는 것 입니다.
뭐... 보여 주기만을 위한 것이라면.. 아무렴 상관없겠지만... 값의 자릿수를 잘라서 처리하는 로직이 들어있는 경우엔 심각한 문제가 될 것입니다.
이것에 대한 해결책은... 직접 함수를 만들어서.. 처리하는 방법도 있겠지만.. 귀차니즘때문에 힘들 것 같고..
델파이에서 지원해주는 함수를 설정하는 방법이 있는 것 같네요..
var
...
DefaultLCID: LCID;
begin
...
DefaultLCID := GetThreadLocale;
if GetLocaleStr(DefaultLCID, LOCALE_STIMEFORMAT, '') <> 'HH:mm:ss' then
begin
ShortTimeFormat := 'HH:mm';
LongTimeFormat := 'HH:mm:ss';
end;
...
이런 식으로 해서.. 초기 로딩시.. 설정을 한다던가.. 아님.. 특정 부분에 대해서 만 이렇게 처리를 하면 되는 것 같습니다.
소스를 추가하고 실행하였더니.. 원하는 대로 마스크에디터에 원하는 결과가 들어왔습니다.
사실 포스팅을 하고 나서..생각해보니..예전 소스들에서 이런 비슷한 문제가 발생했던 것 같네요.. ㅜㅜ
다 찾아서 수정을 해야 문제가 말끔히 해결되긴 할텐데.. ^^
'프로그래밍 > delphi' 카테고리의 다른 글
델파이 dll 모달폼을 일반 폼으로 변경하기 위한 팁.. (0) | 2015.05.29 |
---|---|
delphi TMS 달력에 특정 날짜에 색 표시하기.... (0) | 2015.04.27 |
delphi exe와 프로그램안에 embadded된 dll프로그램간의 상호간 제어하기 (0) | 2015.04.11 |
delphi DLL폼을 exe프로그램의 패널 안에 넣어볼까요? ( How to dll from embedded in exe panel ) (0) | 2015.04.10 |
delphi 폼을 패널안에 넣으려면 어떻게 하면 될까요? (0) | 2015.04.10 |
댓글