Q&A

  • while 문 중간에 중지시키고 싶습니다
버튼을 누르면 아래와 같이 while 문이 돕니다

while ... do
begin
   작업...
   Sleep(1000);
end;

근데 이 버튼을 한번 더 누르면 작업을 중간에 종료하고 싶습니다

그리고 Application.ProcessMessage 이거 어디에 사용하는건지요..?

상세한 답변 부탁드립니다~
4  COMMENTS
  • Profile
    아폴론 2003.02.16 01:31

    var Tstop : Boolean;  //전역번수선언


       루프를 돌립니다.

       while not eof do  begin
             Application.ProcessMessages;
             if not Tstop then begin            
                break;
                exit;
             end;

       별도의 Stop버튼을 누릅니다.
       Tstop := False;

  • Profile
    열심히 2003.02.15 19:35
    음...근데 한가지 문제가 아래와 같이 sleep()을 쓰는것은 좋지가 않습니다.

    TTimer를 쓰시는게 좋ㅇ르것 같아요.. 저도 전에 스레드 생성해서

    파워 포인트의 슬라이드 쇼처럼 보리게 하는걸 만들때 장수가 넘어가는 중간에

    sleep을 썼었는데. 이걸 쓰니깐 sleep되있는동안 어플리 케이션이 완전히

    멈추게 됩니다..한번 테스트 해보셈...


  • Profile
    KDDG_Check 2003.02.15 18:59
    안녕하세요

    Application.ProcessMessage;
    메세지를 진행 시키라는 거지요.
    즉 프로그램의 메세지 큐에 들어 와 있는 메세지를 처리 해라 라는 겁니다.

    프로그램에서 오랫동안 루프를 돌게 되면(While 등)
    프로그램이 받게 되는 메시지를 처리할 시간을 안주죠.
    그래서 프로그램이 얼어버린다(Freeze)는 표현을 쓰기두 하는데,
    프로그램이 사용자의 입력이나, 화면 갱신을 안하는거죠
    일테면 어떤 다른 프로그램에 화면이 가려졌다가 나타났을때
    화면을 다시 그려줘야 하는데, 그걸 그려주지 못한다던지
    어떤 일을 할때 중간에 취소버튼으로 취소를 해야할 때가 있는데
    버튼을 눌러도 프로그램이 거기에 대한 처리를 못하는거죠.
    그러니까 루프 도는 중간중간에 그런것도 처리 해주면서 일하라는 겁니다.

    코딩의 무아지경에 빠져 있을때라두 전화가 오면 전화두 받아줘라 머 그런거죠.

    주말 잘 보내세요
  • Profile
    KDDG_ZZOM 2003.02.15 13:02
    var
      Form1: TForm1;
      Work : Boolean;
    implementation

    {$R *.DFM}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Button1.Caption := '작업중...';
      if Work then
        Work := False
      else
        Work := True;

      while Work do
      begin
        Application.ProcessMessages;
      end;
      Button1.Caption := '작업종료';
    end;

    이케 하면 될것같네요....

    쫌더 뽀다구나는 코드가 있을것같은데... 실력이 이것뿐이라서...

    즐프하세요...


    • 성대현
    • 2003.02.17 21:25
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이영진
    • 2003.02.17 21:14
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2003.02.18 03:04
      안녕하세요. 한원희입니다. 프로젝트 옵션에서, Compiler 옵션 중에 Debug Information 정보를 설정하신...
    • 구창민
      2003.02.17 21:24
      x 표시가 되었다면 실행되지 않는다는 뜻입니다. 분명히 실행되어야 하는 라인인데 x 표시가 되었다면 ...
    • 김병진
    • 2003.02.17 20:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2003.02.17 21:15
      델파이 기본 VCL에서는 안됩니다. 해결방법은 CustomEdit를 상속받아서 새 컴포넌트를 제작하시던가, 원...
    • KDDG_Check
      2003.02.17 19:58
      간략하게 설명한다면... TQuery의 결과 레코드 셋에서 커서가 앞,뒤로 다 움직일 수 있느냐? 한(앞)쪽으...
    • 구창민
      2003.02.17 20:00
      경규님 아는게 없어서 질답란에 안쓴다더니 아는거 많네여? 카카 ㅋㅋ
    • KDDG_Check
      2003.02.17 21:07
      에겅...아는거 쥐뿔두 없습니다. ㅎㅎ 걍 칼리행님이 쓰신 글에 답글 해 놓구 지성 스런 맘이 들어서리....
    • zebra
    • 2003.02.17 11:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_hyun
      2003.02.17 19:29
      비지블? 이 있습니다 그걸 투루 펄스로 해주시면 될꺼에요.. 예로 classify 라는 컬럼이 Q_grd 라...
    • goodlsw
    • 2003.02.16 09:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이병훈
      2003.02.18 07:25
      안녕하세요. 지나가다 몇자 적어 봅니다. 쿼리로 하면 삽입하고 하는 것은 해결이 될것 같네요. ...
    • 강인규
      2003.02.17 21:40
      dlldb라는 alias가 없다는 말이군요. 해당에러가 ASP의 어느 라인에서 나는지 잘 모르겠지만 (9줄밖에 ...
    • 구창민
      2003.02.17 20:25
      클래스 명을 가져오는 일 정도라면 훅을 하지 않으셔도 됩니다. 일전에 테스트 해본 바로는 윈도9x 계열...
    • 홍진혁
    • 2003.02.16 03:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박종철
    • 2003.02.16 02:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Check
      2003.02.17 21:34
      안녕하세요. 여유로움입니다. 데이터를 읽을 수 없다는 말씀이 어떤 건지 잘 모르겠네요. 무슨 에러 메...
    • 박성훈
      2003.02.17 21:22
      안녕하세요? 사용하신 컴포넌트 찾아보니까 버퍼지우는 메소드가 있던데요. CPort.ClearBuffer(Input, ...
    • 김진효
    • 2003.02.15 22:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 거리
      2003.02.16 00:31
      이렇게 해보니깐 되더라구요. ------Floattostr-------- procedure TForm1.Button1Click(Sender: TObject...
    • 김상수
    • 2003.02.15 21:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.02.16 01:40
      Exl.WorkBooksOpen('C:text.exe'); Exl.Sheets['test'].select; Exl.Visible := true; 이러면 열 수 있...
    • neperz
    • 2003.02.15 11:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.02.15 12:51
      검색하시면 답이 나올것같은데... 이런방법으로 하면 안되나요? 먼저 xxx.bat란 파일안데 원하시는 ...
    • 박지원
    • 2003.02.15 10:56
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 아폴론
      2003.02.16 01:31
      var Tstop : Boolean;  //전역번수선언    루프를 돌립니다.   ...
    • 열심히
      2003.02.15 19:35
      음...근데 한가지 문제가 아래와 같이 sleep()을 쓰는것은 좋지가 않습니다. TTimer를 쓰시는게 좋ㅇ르...
    • KDDG_Check
      2003.02.15 18:59
      안녕하세요 Application.ProcessMessage; 메세지를 진행 시키라는 거지요. 즉 프로그램의 메세지 큐에...
    • KDDG_ZZOM
      2003.02.15 13:02
      var   Form1: TForm1;   Work : Boolean; implementation {$R *.DFM} proced...
    • 이진원
    • 2003.02.15 05:38
    • 5 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2003.02.15 09:43
      ==> TIdFTPClient 는 대표적인 Unix Type과 Windows NT 를 구현해 놓았습니다. Unix 자체에도 상당히 다...
    • 이진원
      2003.02.15 21:44
      님 말씀 고맙습니다. 그런데 어느 부분을 수정해야 될지 모르겠군요. idftp의 connect 메소드는 사용해야 ...
    • KDDG_BaSTaD
      2003.02.15 22:23
      ==> Connect()에 Response가 [200,215]밖에 없나요? Indy는 자체 에러 처리 메카니즘으로 Normal Exce...
    • 이진원
      2003.02.15 23:28
      최신 버젼 설치 실행화일을 어디서 다운 받아 설치하나요. indy 페이지에 들어가 보니 소스만 올라와 있고...
    • KDDG_BaSTaD
      2003.02.16 12:56
      ==> 아직 Setup은 나와있질 않습니다. 하지만, 소스를 가져와서 컴파일 하시면 됩니다. 간단하죠..&nb...
    • 이창영
    • 2003.02.15 05:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 남양원
      2003.02.16 00:23
      문제의 해결책이 될지 어떨지는 모르겠습니다만 제 생각에는 한글이 깨져 보이는 경우는 컴파일시 지정...