Q&A

  • For Loop 를 다른 이벤트에서 중지시키기..??
안녕하세요?



저는 타이머를 이용한 일종의 플레이어를 제작하다가 도저히 타이머의 부정확성으로 인하여 이것으로는 제작할 수 없다고 생각하게 되었습니다. ( 약 30 ms 의 해상도를 지녀야 하는데.. 제 멋대로입니다. )



그래서 혹시나 하고 for 루프로 플레이 데이타를 돌렸더니 거의 완벽하게 돌더군요. 생각해보면 이때의 priority 가 100 % 이기 때문에 아무 시간적 손실없이 플레이되는 게 아닌가 합니다.



이렇게 플레이가 된다는 것은 좋은데, 문제는 이것을 중간에 중단시킬 수가 없다는것입니다. 컨트롤이 완전히 그 프로시져에 묶여있어서인지 아무튼 다른 콘트롤은 완전히 사용할 수 없는 상태가 됩니다.



물론 다른 윈도우로 포커스를 넘기는 것은 가능하더군요.



아무튼 이 문제를 어떻게 해결할 수 있을까요? 아무리 타이머의 priority 를 올려도 이문제는 해결 할 수 없을 거 같고, 위와 같이 for 루프로 돌리면 컨트롤을 제어할 수가 없고... 난관입니다.



고수 여러분 한 번 살펴보시고 조언해주세요..



그럼 기다리겠습니다..

1  COMMENTS
  • Profile
    최용일 2000.09.18 08:47
    안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다.



    루프 중간에 Application.ProcessMessage메소드를 쓰면 루프를 도는 중에도 이벤트가



    먹습니다. 루프를 제어하는 변수를 하나두고 다른 이벤트에서 이 변수를 이용하여 루프



    를 제어하시면 되겠네요...



    var

    LoopExit: Boolean; // 다른 이벤트에서 제어할 수 있는 범위에 선언을 해야겠죠...



    procedure TForm1.SomeThing;

    begin

    ...

    for ... to ... do

    begin

    ...

    Application.ProcessMessage;

    ...

    if LoopExit then

    Exit; // or Break;

    ...

    end;

    ...

    end;



    ^^ 항상 즐코하세요.



    백인기 wrote:

    > 안녕하세요?

    >

    > 저는 타이머를 이용한 일종의 플레이어를 제작하다가 도저히 타이머의 부정확성으로 인하여 이것으로는 제작할 수 없다고 생각하게 되었습니다. ( 약 30 ms 의 해상도를 지녀야 하는데.. 제 멋대로입니다. )

    >

    > 그래서 혹시나 하고 for 루프로 플레이 데이타를 돌렸더니 거의 완벽하게 돌더군요. 생각해보면 이때의 priority 가 100 % 이기 때문에 아무 시간적 손실없이 플레이되는 게 아닌가 합니다.

    >

    > 이렇게 플레이가 된다는 것은 좋은데, 문제는 이것을 중간에 중단시킬 수가 없다는것입니다. 컨트롤이 완전히 그 프로시져에 묶여있어서인지 아무튼 다른 콘트롤은 완전히 사용할 수 없는 상태가 됩니다.

    >

    > 물론 다른 윈도우로 포커스를 넘기는 것은 가능하더군요.

    >

    > 아무튼 이 문제를 어떻게 해결할 수 있을까요? 아무리 타이머의 priority 를 올려도 이문제는 해결 할 수 없을 거 같고, 위와 같이 for 루프로 돌리면 컨트롤을 제어할 수가 없고... 난관입니다.

    >

    > 고수 여러분 한 번 살펴보시고 조언해주세요..

    >

    > 그럼 기다리겠습니다..

    • azure
    • 2000.09.18 19:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.18 22:55
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. raise는 예외를 발생시...
    • Cha
    • 2000.09.18 18:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.18 22:49
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. type TForm1 = cl...
    • 향기
    • 2000.09.18 18:36
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.18 19:58
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 두개의 컴포넌트 모두...
    • 향기
      2000.09.18 22:06
      답변해 주셔서 감사 합니다. 파생하여 새로운 클래스를 만들만한 실력은 안되네요.. 혹시 제 3자 compon...
    • 최용일
      2000.09.18 22:43
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 오늘중에 자료실에 올...
    • 이경철
    • 2000.09.18 18:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최은석
      2000.09.18 18:50
      이경철 wrote: > 안녕하세요! > > Quick Report에서 Preview 할때 화면사이즈를 맘대로 할수 > 있...
    • 이경철
      2000.09.18 22:35
      너무나 감사합니다! 혹시나 하구 올렸는데 성의있는 가르침 너무나 고맙습니다. 배우는 단계라 자주 연...
    • 김옥란
    • 2000.09.18 16:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 666
      2000.09.18 17:54
      아래와 같이 한번 해보시면 어떠하실지... with query do begin Close; SQL.Clear; SQL...
    • 백인기
    • 2000.09.18 13:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.09.19 07:12
      스피커를 제어하는 부분을 사용하셨다면 아마 직접 Port를 건드렸을 겁니다. NT, 2000계열에서 해당하는 ...
    • 백인기
      2000.09.19 20:23
      정말 감사합니다. 이렇게들 답변을 주시니 정말 많은 도움이 되는군요. 저도 언젠가는 이처럼 다른 분...
    • 이진우
    • 2000.09.18 12:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2000.09.19 20:53
      하나의 서버소켓이 수용할 수 있는 클라이언트의 접속한계는 OS에 연관이 많이 있습니다. 95, 95보다가는 ...
    • 최은석
      2000.09.18 18:56
      델피 풍월 wrote: > 테이블에 저장을 하려 하는데 > table1.insert; > table1.fieldbyname('필드명').a...
    • 이대선
      2000.09.18 18:57
      [델파이] wrote: > > 간단한 소켓으로 스트림 전송하는 예제가 없을까요? > > 아주 간단한것이라도...
    • 임형호
    • 2000.09.18 09:09
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이대선
      2000.09.18 19:09
      임형호 wrote: > serversocket과 clientsocket 을 서로 연결해서 메세지를 전달합니다. > 음... 이상한것...
    • 임형호
      2000.09.18 19:31
      답변 감사드립니다. 님께서 답변주신 내용중에 2번째는 맞게 되어있구요. 우선 바이러스 체크부터 해봐야겠...
    • 김상호
      2000.09.20 02:56
      위의 경우 서버와 소켓의 아이피 주소가 같아야 한다는 것은 잘못된것입니다. 서버와 클라이언트는 ip를...
    • 2000.09.18 09:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.18 19:54
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 스피드버튼의 이미지 ...
    • 백인기
    • 2000.09.18 06:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.09.18 08:47
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 루프 중간에 Applicati...
    • 최용일
      2000.09.18 08:38
      안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 흠~ 델파이 시디에는 C...
    • 임형호
      2000.09.18 06:28
      Table1.EmptyTable 이라는 프로시저가 있습니다. 한꺼번에 지우는겁니다. 그럼... 정진아 wrote: > ...
    • 사발우성
      2000.09.18 19:03
      sql문의 delete에서 where절을 안주고 지우면 돼죠 푸하하하..... 넘 이상한답인가...헐...^^