다음 코드의 문제점을 찾아보십시요
제목에 쓰여있듯이 간단한 문제입니다.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int iVal=StrToIntDef(Edit1->Text,0);
ShowMessage(iVal);
}
가끔 이와같은 실수를 하는 이가 있는것 같구요
사실 예전에 저도 이런실수 했었구요 ㅋㅋ
잉....
답변이 없네요. 너무 쉬워서 그런가?
힌트
힌트 나갑니다.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int iSleepTime=StrToIntDef(Edit1->Text,1000);
Sleep(iSleepTime); //이때 sleep하는 동안 어플이 먹통이 되죠
}
//그래서 다음과 같이 코딩하는 경우를 봤습니다.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int iSleepTime=StrToIntDef(Edit1->Text,1000);
int itic=GetTickCount();
while(true)
{
Sleep(1);
//이렇게 하면 sleep하는 동안 어플이 먹통이 되지는 않죠
Application->ProcessMessages();
if((GetTickCount() - itic)>=iSleepTime) break;
}
}
바로위에서 두번째 코드도 똑같은 문제를 야기 시키죠~!
Q&A에 올라오는 질문중에서 위와같은 코드를 가끔씩 보게되어
이런 퀴즈를 올려본것입니다.
그럼..
|