|
뭐가 틀리지? 하고 저도 해보니까, 이상 없이 되는데요.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *Data = Edit1->Text.c_str();
int Len = StrLen(Edit1->Text.c_str());
for( int i=0 ; i<Len ; i++ )
if( ! ( '0' <= Data[i] && Data[i] <= '9' ) )
{
ShowMessage( "숫자만 입력하세요." );
return;
}
}
폼에 TEdit 하나 올리고 TButton 하나 올려서 작성한 겁니다.
정상적으로 동작하는데요... 흠....
아마 사용하시는 빌더 버젼의 버그로 보입니다.
저는 터보씨빌더 쓰고 있습니다.
그리고 숫자인지 비교하실 때는 문자열을 숫자로 바꾸는 AnsiString의 맴버함수가 있습니다.
if( Edit1->Text.ToIntDef(0) != Edit1->Text.ToIntDef(1) )
ShowMessage( "숫자만 입력하세요." );
이렇게 단 두줄에 해결됩니다.
수고하세요.. 흠...
민간돼지 님이 쓰신 글 :
: 아래와 같이 실행하면 Data값이 제대로 나오는데요
: //////////////////////////////////////////////////////////////////
: AnsiString TESTData;
: TESTData = vEditInterval->Text;
: char *Data = TESTData.c_str();
:
: int length = StrLen(vEditInterval->Text.c_str());
:
: for(int i= 0; i<length; i++)
: { -
: if(!('0'<=Data[i]&&Data[i]<='9'))
: {
: MessageDlg("숫자만 입력하세요", mtWarning, TMsgDlgButtons() << mbOK, 0);
: return;
: }
: }
: //////////////////////////////////////////////////////////////////
: 아래와 같이 실행하면 Data값이 이상하게 나오는데 차이를 모르겠습니다.
: /////////////////////////////////////////////////////////////////
:
: char *Data = vEditInterval->Text.c_str();
:
: int length = StrLen(vEditInterval->Text.c_str());
:
: for(int i= 0; i<length; i++)
: { -
: if(!('0'<=Data[i]&&Data[i]<='9'))
: {
: MessageDlg("숫자만 입력하세요", mtWarning, TMsgDlgButtons() << mbOK, 0);
: return;
: }
: }
: /////////////////////////////////////////////////////////////////////////////////////////////////////
: AnsiString TESTData; //
: TESTData = vEditInterval->Text; // char *Data = vEditInterval->Text.c_str();
: char *Data = TESTData.c_str(); //
: ////////////////////////////////////////////////////////////////////////////////////////////////////
: 초보적인 질문이지만 비교 부탁드리겠습니다. 너무 궁금해서요
|