Q&A

  • for , while 문에서 다른 이벤트를 기다리게...
안녕하세요...



이곳 도움을 많이 받고 공부하는 사람입니다..



역시나 궁금한게 또 생겼습니다... 참.. 저는 씨뿔뿔빌더를 사용하는데 델파이가



많이 활성화 되서 이곳을 주로 이용합니다...



질문은요... 제목대로 for 문이나 while 문에서 중간에 다른 이벤트가 생길때



까지 기다리게 할수 있는가 입니다...



예를 들어 버튼1을 누르면 다음과 같이 while 문이 실행됩니다...



while(1)

{

x = x+1;

// 이곳에서 다른 이벤트가 생길때 까지 대기

}



즉 , 위의 x = x+1; 다음에 기다렸다가 버튼2가 눌렸다는 이벤트가 생기면



그때 다시 다음 x = x+1; 을 실행하고 또 기다리고....



이런식으로 프로그램 중간에 잠시 멈추게 할수 있는지요...



물론 위의 예는 다른 방법으로 하면 되지만요...



고수님들의 조언을 부탁드립니다...



안녕히계세요...



3  COMMENTS
  • Profile
    이정욱 1999.07.08 01:46
    쩝.. 제가 사용하는 방법은 이렇습니다.

    델파이로~



    먼저 전역변수를 하나 놓아야 겠죠?

    var

    ButtonClicked : Boolean;



    그리고 버튼의 OnClick이벤트에 ButtonClicked := True 라는 것을 넣어주고요..

    글구 반복문에서는...



    while true do

    begin

    inc(x);

    while not ButtonClicked do Application.ProcessMessages;

    ButtonClicked := False;

    end;



    위처럼 하면 어떨까요?



    온라인상에서 만든것이라 수정이 필요할 수 있습니다.



    그럼 좋은코딩하세요~



    문보석 께서 말씀하시기를...

    > 안녕하세요...

    >

    > 이곳 도움을 많이 받고 공부하는 사람입니다..

    >

    > 역시나 궁금한게 또 생겼습니다... 참.. 저는 씨뿔뿔빌더를 사용하는데 델파이가

    >

    > 많이 활성화 되서 이곳을 주로 이용합니다...

    >

    > 질문은요... 제목대로 for 문이나 while 문에서 중간에 다른 이벤트가 생길때

    >

    > 까지 기다리게 할수 있는가 입니다...

    >

    > 예를 들어 버튼1을 누르면 다음과 같이 while 문이 실행됩니다...

    >

    > while(1)

    > {

    > x = x+1;

    > // 이곳에서 다른 이벤트가 생길때 까지 대기

    > }

    >

    > 즉 , 위의 x = x+1; 다음에 기다렸다가 버튼2가 눌렸다는 이벤트가 생기면

    >

    > 그때 다시 다음 x = x+1; 을 실행하고 또 기다리고....

    >

    > 이런식으로 프로그램 중간에 잠시 멈추게 할수 있는지요...

    >

    > 물론 위의 예는 다른 방법으로 하면 되지만요...

    >

    > 고수님들의 조언을 부탁드립니다...

    >

    > 안녕히계세요...

    >





  • Profile
    문보석 1999.07.08 04:14
    답변감사드립니다...



    쩝... 제가 원하는 것은 단순히 이정욱님의 말씀대로 버튼을 눌렀을때



    루프문이 도는 것이 아니거든요...



    루프문이 돌때 마다 다른 이벤트를 받으면 다시 루프를 도는것이죠...



    꼭 버튼이 클릭됐다는 이벤트가 아니더라도 확실하게 말씀드리자면



    while true do

    begin

    inc(x) ;

    // 이 부분에서 어떠한 이벤트든지간에 무조건 기다림...

    end;



    위에서 inc(x) 하고 난후에 기다렸다가 다른 이벤트가 생기면 다시 루프문이 돌고



    또 inc(x) 하고 난후에 기다렸다가 다른 이벤트가 생기면 다시 루프돌고...



    이런식이죠...



    다시 한번 답변 부탁드릴께요...



    안녕히... 꾸벅~~







    이정욱 께서 말씀하시기를...

    > 쩝.. 제가 사용하는 방법은 이렇습니다.

    > 델파이로~

    >

    > 먼저 전역변수를 하나 놓아야 겠죠?

    > var

    > ButtonClicked : Boolean;

    >

    > 그리고 버튼의 OnClick이벤트에 ButtonClicked := True 라는 것을 넣어주고요..

    > 글구 반복문에서는...

    >

    > while true do

    > begin

    > inc(x);

    > while not ButtonClicked do Application.ProcessMessages;

    > ButtonClicked := False;

    > end;

    >

    > 위처럼 하면 어떨까요?

    >

    > 온라인상에서 만든것이라 수정이 필요할 수 있습니다.

    >

    > 그럼 좋은코딩하세요~

    >





  • Profile
    안치봉 1999.07.08 04:18
    PeekMessage, GetMessage 를 사용해 보시죠...



    자세한건 Win32 API 도움말을 참고하세요.



    아니면 순수 API 방식으로 구현한 파스칼 소스를 보시던지요.





    문보석 께서 말씀하시기를...

    > 답변감사드립니다...

    >

    > 쩝... 제가 원하는 것은 단순히 이정욱님의 말씀대로 버튼을 눌렀을때

    >

    > 루프문이 도는 것이 아니거든요...

    >

    > 루프문이 돌때 마다 다른 이벤트를 받으면 다시 루프를 도는것이죠...

    >

    > 꼭 버튼이 클릭됐다는 이벤트가 아니더라도 확실하게 말씀드리자면

    >

    > while true do

    > begin

    > inc(x) ;

    > // 이 부분에서 어떠한 이벤트든지간에 무조건 기다림...

    > end;

    >

    > 위에서 inc(x) 하고 난후에 기다렸다가 다른 이벤트가 생기면 다시 루프문이 돌고

    >

    > 또 inc(x) 하고 난후에 기다렸다가 다른 이벤트가 생기면 다시 루프돌고...

    >

    > 이런식이죠...

    >

    > 다시 한번 답변 부탁드릴께요...

    >

    > 안녕히... 꾸벅~~

    >

    >

    >

    > 이정욱 께서 말씀하시기를...

    > > 쩝.. 제가 사용하는 방법은 이렇습니다.

    > > 델파이로~

    > >

    > > 먼저 전역변수를 하나 놓아야 겠죠?

    > > var

    > > ButtonClicked : Boolean;

    > >

    > > 그리고 버튼의 OnClick이벤트에 ButtonClicked := True 라는 것을 넣어주고요..

    > > 글구 반복문에서는...

    > >

    > > while true do

    > > begin

    > > inc(x);

    > > while not ButtonClicked do Application.ProcessMessages;

    > > ButtonClicked := False;

    > > end;

    > >

    > > 위처럼 하면 어떨까요?

    > >

    > > 온라인상에서 만든것이라 수정이 필요할 수 있습니다.

    > >

    > > 그럼 좋은코딩하세요~

    > >

    >

    >