Q&A

  • 두날짜값으로 루틴 돌리기...
안녕하세요

또 하나의 질문입니다..

에디트 박스를 두게 이용하여 날짜를 입력받아서 두 날짜 사이를 루틴으로 돌려 어떤 작업을 할려고 합니다..

그런데 문제는 두 날짜가 같은 달이면 가능한데 달이 바뀐다거나 년이 바뀌면 문제가 발생하는데 해결방법은 없는지요

예를들어 edit1.txt ='20000331' 이고 edit2.txt='20000403'이라고 하면

제가 생가한 방법은 두 에디트박스의 갑을 정수형으로 바꿔서 루틴을 돌리려고 했는데

그러면 많은 문제가 발생합니다

실제로 요구하는 것은 20000331,20000401,20000402,20000403 이렇게 4번만 반복하면 되는데..

제가 생가한 방법으로는 20000331,20000332...이렇게 반복하는데요

해결방법은 없나요..

델파이를 열심히 해보고 싶은 사람입니다..

해결책이 있으면 연락주세요..



1  COMMENTS
  • Profile
    최용일 2000.04.03 19:19
    안녕하세요. 최용일입니다.



    TTimeStamp를 이용하세요. 그러니까 입력받은 날짜를 TTimeStamp형으로 변환한 후



    이것을 정수 인덱스로 사용하고 다시 TTimeStamp를 날짜로 바꾸어서 함수내에서



    사용하는 것입니다.



    흠... 설명은 간단한데 코딩이 좀 지저분하네요... 죄송...



    var

    Current: Integer;

    CurrentStamp, FirstStamp, LastStamp: TTimeStamp;

    CurrentDate, FirstDate, LastDate: TDateTime;

    begin

    FirstDate := StrToDate(Edit1.Text); // Edit1.Text = '2000-03-31'

    LastDate := StrToDate(Edit2.Text); // Edit2.Text = 2000-04-03'



    // 날짜를 정수 인덱스로 바꾼다.

    FirstStamp := DateTimeToTimeStamp(FirstDate);

    LastStamp := DateTimeToTimeStamp(LastDate);



    for Current := FirstStamp.Date to LastStamp.Date do

    begin

    // 정수 인덱스를 날짜로 바꾼다.

    CurrentStamp.Date := Current;

    CurrentDate := TimeStampToDateTime(CurrentStamp);



    // CurrentDate = 2000-03-31, 2000-04-01, 2000-04-02, 20000-04-03



    // 여기에서 원하시는 작업을 하시면 됩니다.

    ListBox1.Items.Add(DateToStr(CurrentDate));

    end;

    end;



    장민석 wrote:

    > 안녕하세요

    > 또 하나의 질문입니다..

    > 에디트 박스를 두게 이용하여 날짜를 입력받아서 두 날짜 사이를 루틴으로 돌려 어떤 작업을 할려고 합니다..

    > 그런데 문제는 두 날짜가 같은 달이면 가능한데 달이 바뀐다거나 년이 바뀌면 문제가 발생하는데 해결방법은 없는지요

    > 예를들어 edit1.txt ='20000331' 이고 edit2.txt='20000403'이라고 하면

    > 제가 생가한 방법은 두 에디트박스의 갑을 정수형으로 바꿔서 루틴을 돌리려고 했는데

    > 그러면 많은 문제가 발생합니다

    > 실제로 요구하는 것은 20000331,20000401,20000402,20000403 이렇게 4번만 반복하면 되는데..

    > 제가 생가한 방법으로는 20000331,20000332...이렇게 반복하는데요

    > 해결방법은 없나요..

    > 델파이를 열심히 해보고 싶은 사람입니다..

    > 해결책이 있으면 연락주세요..

    >