Q&A

  • Sleep 문의 이상한 동작 ^^a 좀 봐주세염?
머 대단한건 아니구여....
그냥 공부나 좀 할까 하구.. 이것 저것 해보구 있던중에.. 이상한걸 발견해서요... 아래 보시면 중간에 Sleep 문이 하나 있는데여...
요게 계획한 데루 동작을 않하고 지 맘대로 동작하네여... -.-a
원래 계획은 문자열이 STRING 이라면...
S
ST
STR
STRI
STRIN
STRING라고 찍어 주는 거였는데여...

Sleep 하는 시간 만큼 다 있다가 막판에 확 찍어줘 버리네여?
왜 그런걸까여? 궁금해여.. -.-;;
참고로.. 아래꺼는 프로시져 문젠가 해서... 프로시져를 따루 작성해서 했던 건데.. 그냥 라인에서 출력하라고 하는 거나 별 차이가 없네여.. -.-;;

procedure TForm1.Button1Click(Sender: TObject);
var
   i, j, k : integer;
   Strtemp : String;
begin
   j := 0;
   k := 0;

   StrTemp := '';
   StrTemp := Edit1.Text;
   for i := 1 to Length(StrTemp) do
   begin
       if Copy(StrTemp, i, 1) = ' ' then
       begin
           j   := j + 1;
           Continue;
       end;

       k := k+1;
       Sleep(1000);
       TypeStr(Copy(StrTemp, i, 1))
   end;

   Panel2.Caption := '공백수'+IntToStr(j);
   panel3.Caption := '문자수'+IntToStr(k);
end;

procedure TForm1.TypeStr(Str : String);
begin
   Panel1.Caption := Panel1.Caption + str;
end;
2  COMMENTS
  • Profile
    김동묵 2002.05.28 04:03
    procedure TForm1.TypeStr(Str : String);
    begin
       Application.ProcessMessages;
       Panel1.Caption := Panel1.Caption + str;
    end;

       Application.ProcessMessages; //만 추가 하세요.
  • Profile
    김도형 2002.05.28 03:51
    Sleep 대신 이넘을 써보세염...

    Sleep는 Cpu의 동작을 잡는다구 하던거 같은데..

    그넘 별루더라구염..

    이 함수는 어디선가 퍼온건데....

    해보시면 원하는 값을 볼수 있을겁니다...


    procedure Delay(msecs: integer);
    var
       FirstTickCount: longint;
    begin
       FirstTickCount := GetTickCount;
       repeat
         Application.ProcessMessages;
       until ((GetTickCount - FirstTickCount) >= Longint(msecs));
    end;