Q&A

  • [질문]숫자를 월일로 바꾸는 프로그램인데 2월때문에 생기는 오류같은데 어찌해야할지...
procedure TForm1.Button1Click(Sender: TObject);
var
startdate,today:TDateTime;
tmpstmp:TTimeStamp;
tYear,tMonth,tDay:Word;

begin
  startdate := EncodeDate(1899,12,30);
  tmpstmp := DateTimeToTimeStamp(startdate);
  tmpstmp.Date := StrToInt(Edit1.text);
  today := TimeStampToDateTime(tmpstmp);
  DecodeDate(today,tYear,tMonth,tDay);
  Edit2.Text := IntToStr(tMonth)+'/'+IntToStr(tDay);
end;


1~59 까지는 맞는데 60이면 엑셀에선 2/29인데 여기선 3/1로 나오네요.
좋은수가 없을까요?
파일첨부합니다.
2  COMMENTS
  • Profile
    홍성락 2008.07.02 03:03
    조금 수정하시면 될거 같아요. 아래는 소스를 바꾸지 않는 상태에서 조금 수정하였습니다.
    일단 숫자로 바로쓰는건 위험하므로 EncodeDate 대신 TryEncodeDate로 이용하세요.
    그리고 1900,2,29은 올바른 날짜가 어닙니다. 따라서 초기 1899,12,30는 곤란합니다.
    그래서 예로 2007,12,31으로 했어요. 그러면 2008/2/29이 나옵니다, 2008년 2월은 29일따지 진짜 있으므로...
    그리고 tmpstmp.Date := tmpstmp.Date + StrToInt(Edit1.text);으로 하시면 누적됩니다.
    <!--CodeS-->
    if TryEncodeDate(2007,12,31) then begin
    tmpstmp := DateTimeToTimeStamp(startdate);
    tmpstmp.Date := tmpstmp.Date + StrToInt(Edit1.text);
    today := TimeStampToDateTime(tmpstmp);
    DecodeDate(today,tYear,tMonth,tDay);
    Edit2.Text := IntToStr(tMonth)+'/'+IntToStr(tDay);
    end;
    <!--CodeE-->
  • Profile
    임정미 2008.07.02 05:58
    감사합니다. 덕분에 잘 해결되었어요.
    TryEncodeDate에 하나 빼먹으셨네요. ㅎㅎ
    TryEncodeDate(2007,12,31,startdate)로 고쳐서 잘 됩니다.
    • 루단스
    • 2008.07.04 19:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 루단스
      2008.07.04 22:21
      The ExpressPageControl - shipped with the ExpressQuantumGrid Suite ..... 라고 되어있네요. ㅜ.ㅜ Ex...
    • 김상진
    • 2008.07.04 17:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2008.07.04 18:24
      cxDateEdit.Date 프로퍼티를 사용하세요.
    • 석주현
      2008.07.03 18:18
      기본적인 라이브러리에 해당하는 파일을 못찾는걸 보면 다시 설치하세요. 델파이의 Path 부분 설정이...
    • 석주현
      2008.07.03 19:17
      쪽지 보내신 답을 여기에 적어 봅니다. 기본적으로 델파이에서 제공되는 컴포넌트 라이브러리들은 패...
    • 가르쳐주삼
      2008.07.04 01:56
      감사합니다~
    • 다른남자
    • 2008.07.03 10:01
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.07.03 11:26
      그냥 참조하세요 WndParent 를 조정해 보심은 어떨런지요? Delphi2005 는 어떻게 돌아가는지 잘모...
    • 석주현
      2008.07.03 11:44
      음 지금 제가 직접해봤는데 질문하신 내용에서 정상과 동일하게 되는데 뭐가 안된다는 건지 모르겠습...
    • 다른남자
      2008.07.05 09:11
      감사합니다. 해결
    • 장성호
      2008.07.05 11:00
      Application.MainFormOnTaskBar:=false; 는 프로그램이 시작될때 한번만 해주면됩니다. Application-...
    • 최은아
    • 2008.07.03 07:35
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.03 08:53
      아주 간단한 클라이언트서버 라면 DBIsam 이라는 제품이 있습니다. 지금은 ElevateDB 라는 제품으로 바...
    • 최은아
      2008.07.03 09:21
      정욱님.. 답글 감사요. ~~ 마음은 급한데 답글이 없어서 좌절모드 하고 있었는데... 정욱님.. 제가 ...
    • 이정욱
      2008.07.03 14:34
      흠.. 파라독스를 다른 DB로 이전한다는 것이었습니다. 정확히 어떤 상황인지 잘 인지가 안되네요... ...
    • 최은아
      2008.07.03 17:51
      위에 썼는데.. 전 asp 개발자로 제가 맡은 프로젝트는 쇼핑몰입니다. 회원들은 투자금으로 쇼핑몰에...
    • 구창민
      2008.07.03 22:09
      대충 말씀을 읽어보니 asp 에서 파라독스와 붙여서 읽고 쓰고 해야 하는 상황이군요..? 제가 asp 를 ...
    • 이정욱
      2008.07.04 10:24
      음? 그렇다는 뜻은.. 파라독스 DB는 투자자의 컴퓨터에 깔려있는것이고, ASP로 구현한 웹에서 물건을 구...
    • 이정욱
      2008.07.03 08:48
      Zeos 를 안써봐서 정확히는 모르겠지만, 혹시 그 컴포넌트 안에 Cache 관련된 프로퍼티가 있는지 확인해...
    • 허학송
      2008.07.03 17:57
      Zeos 6.6.2라면 Query(ZQuery)의 속성중 CacheUpdate속성을 False로 지정하시고 해보시기 바랍니다.
    • 초보델피
      2008.07.04 03:45
      이상하네요.. CachedUpdate 속성은 False로 되어 있는데도 그렇네요..
    • 허학송
      2008.07.07 21:42
      cachedupdate가 False로 되어있다면 다른 Client에서 자료를 Update(Insert,Update)할때 Commit를 하지...
    • 초보델피
      2008.07.08 05:45
      제가 설명을 않드린 부분이 있는데 로컬 DB가 아니라 원격지DB에 접속을 합니다.. 타이머로 3초간격으...
    • 초보델피
      2008.07.08 06:12
      아~~ 해결 했습니다.. ZConnection.IsolationLevel 을 tiREADCOMMITTED으로 변경하니까 됩니다.. ...
    • steps
    • 2008.07.03 06:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.03 08:47
      파일의 이름이 깨진다는것이 다이얼로그 상에서 깨지는것인가요? 흠.. OpenDialog 는 윈도우에 있는 ...
    • steps
      2008.07.03 19:58
      다이얼로그상에서는 파일이름이 제대로 나옵니다. 그런데 다이얼로그의 filename을 읽으면 영문자든 중문...
    • 신철우
      2008.07.03 03:32
      [자답] ADOQuery에서는 min,max 함수 사용시 엄청 오래 걸림. 그래서 select top 1 regdate from class_...
    • 이정욱
      2008.07.03 08:44
      MSQuery도 비스타에서 문제 없습니다..
    • phono
      2008.07.04 18:28
      또 하나.. RecordCount 보다는 SELECT count(*) CNT FROM TABLE1 을 사용하여.. 레코드 카운트를 읽...
    • 이정욱
      2008.07.03 08:43
      DevExpress 사의 것은 설치 하시면 바로 컴포넌트로 등록이 되서 사용이 가능해 집니다. 즉, 사용하시...
    • 석주현
      2008.07.02 19:05
      동영상 강좌가 있긴 합니다만 책한권은 구입하셔서 보시는 게 좋을 겁니다. http://codeway.co.kr/...
    • Johnny
    • 2008.07.02 09:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 노경훈
    • 2008.07.02 01:04
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 임정미
    • 2008.07.02 00:59
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.07.02 03:03
      조금 수정하시면 될거 같아요. 아래는 소스를 바꾸지 않는 상태에서 조금 수정하였습니다. 일단 숫자로 ...
    • 임정미
      2008.07.02 05:58
      감사합니다. 덕분에 잘 해결되었어요. TryEncodeDate에 하나 빼먹으셨네요. ㅎㅎ TryEncodeDate(2007...
    • 김상진
    • 2008.07.02 00:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.02 01:25
      DLL 로드시 DLL핸들을 다르게 주셔서 호출 하시면 될것 같은데요 ^^
    • 한윤식
    • 2008.07.01 19:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.07.01 00:04
      procedure CreateMDIChild(const Name: string); 이것을 Form1의 Private 부분에 넣으세요.
    • 석주현
      2008.07.01 01:48
      이정욱님 말씀처럼 하시면 되고요. 단축키로 Shift + Ctrl + C 를 누르시면 자동으로 생성이 됩니다. ^^
    • 구창민
      2008.06.30 21:49
      안녕하세요... DrawCell 이벤트에 아래처럼 기술하시고 테스트 해보세요.. var TW: integer; be...