Q&A

  • 다시 질문드려요
다시 질문드려요.

(1) 현재시간과 설정된시간(Edit2)이 같으면 동작정지상태로 가구 이 상태로
     계속 유지할수 있는 방법좀 알려주세요.
     시간이 계속 흐르니까 현재시간 = 설정된시간  바로 이 순간만 동작정
     지상태이고 바로 해제가 되는데 이 순간을 그대로 유지할수 있는 방법좀
     알려주세요.


>procedure TForm1.Timer2Timer(Sender: TObject);
>var
>    CurrTime, SpecTime1: string;
>begin
>    CurrTime := FormatDateTime('HHMM', Now);
>    SpecTime1 := Edit1.Text;
>
>    if StrToInt(CurrTime) > StrToInt(SpecTime1) then
>       begin
>         Showmessage('동작중입니다.');
>       end
>end;
>
>procedure TForm1.Timer1Timer(Sender: TObject);
>var
>    CurrTime, SpecTime: string;
>begin
>    CurrTime := FormatDateTime('HHMM', Now);
>    SpecTime := Edit2.Text;
>
>    if CurrTime = SpecTime then
>       ShowMessage('동작정지상태입니다.')
>end;
>
2  COMMENTS
  • Profile
    Crazy 2004.02.09 23:03
    안녕하세요.
    아래 님께서 질문하신 글을 다시 읽어봤는데
    현재시간과 A의 예약시간과 같으면 C 일을 시작하고
    현재시간과 B의 예약시간과 같으면 C일을 종료하는것 같은데요..

    C의 일이 매 초, 매 분, 매 시간등 일정한 내용을 처리하는 거라면 Timer 이벤트의 기술하는게 맞지만,
    C의 일을 단지 처음 시작과 끝이라면 Timer는 C의 일을 시작 및 종료시점만 일러주면 됩니다. 즉 1개의 Timer만 있으면 된다는거죠..

    -------------------------------------------------
    방금 나름대로 구현해 본건데 도움이 되셧음 하네요~
    시간이 같은걸 비교보다 같거나 큰걸 비교하는것은 어떤 프로세스를 하다가
    놓쳐버리는걸 방지하기 위해서입니다.
    그럼..

    Interface

    Uses
              ..................
    type
        TTimerState = ( tState, tExecute, tStop );

    var
      StartState : TTimerState;

    procedure TForm_SD05140.FormShow(Sender: TObject);
    begin
           StartState := tState;
           Timer1.Enabled := True;        
    end;

    procedure TForm_SD05140.Timer1Timer(Sender: TObject);
    begin
          if ( StartState = tState ) and
            ( FormatDateTime( 'HHMM', now ) >= Edit1.Text ) then
          begin //================================= C일 시작
                 StartState = tExecute;          
                procedure C 시작일~~~~~
          end;

          if ( StartState = tExecute ) and
            ( FormatDateTime( 'HHMM', now ) >= Edit2.Text ) then
          begin //================================= C일 종료
                 EndState = tStop;          
                procedure C 종료일~~~~~
          end;

    end;

    procedure ---------------------C 시작----------------
    begin
           Memo1.lines.add( '일하는중 -_-' );
    end;

    procedure ---------------------C 종료 ----------------
    begin
            StartState = tState;
    end;


  • Profile
    Crazy 2004.02.09 22:22
    procedure TForm1.Timer2Timer(Sender: TObject);
    begin
        IF (FormatDateTime('HHMM', Now) = Edit1.Text) THEN
        begin
             Timer1.Enabled := False;
             Showmessage('동작정지');
        end else begin
             Showmessage('동작중입니다.');
         end;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
           // Timer 가 해야 할 이벤트...
    end;