C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[39839] [답변] 문자열에서 특정 문자를 제거하는 법과 문자 입력 막기
정성훈.해미 [sage5nor] 3251 읽음    2005-04-15 11:11
VCL함수에 보면 특정 문자열을 다른 문자열로 변환하는 함수가 있습니다.
AnsiReplaceStr() 함수를 이용하면 특별한 구현 없이 바로 콤마(,)를 제거 할 수 있습니다.

예)
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    AnsiString TempStr = AnsiReplaceStr(Edit1->Text, ",", ""); //콤마(,)를 제거하는 부분

    Edit1->Text = FormatFloat("###,###0", StrToFloatDef(TempStr, 0)); //문자열을 실수로 변환하되 변환 불가시 0로 만듬
    Edit1->SelStart = Edit1->Text.Length() + 1;
}

단, AnsiReplaceStr() 함수를 사용 할려면 상단에 #include <StrUtils.hpp>를 하여 해당 헤더파일을 포함해줘야 합니다.

하지만,
숫자나 콤마가 아닌 문자를 입력시 바로 0으로 바뀌는 결과가 나오기 때문에
이 방법 보다는 저음부터 숫자만 입력되게 하는 것이 바람직하다고 봅니다.
다음과 같이 에디트에 숫자만 입력되게 하는 방법을 사용해 보십시오

예)
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    LONG const dwStyle = GetWindowLong(Edit1->Handle, GWL_STYLE);
    SetWindowLong(Edit1->Handle, GWL_STYLE, dwStyle | ES_NUMBER);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    Edit1->Text = FormatFloat("###,###0", StrToFloatDef(Edit1->Text, 0));
    Edit1->SelStart = Edit1->Text.Length() + 1;
}
//---------------------------------------------------------------------------



궁금이 님이 쓰신 글 :
: Edit에 값을 입력하면 자릿수에 맞게 콤마를 넣는 작업을 할려고 합니다.
: MaskEdit는 처음부터 콤마가 보이기 때문에 사용하기 난처해서요
: 막상 Edit에 콤마를 넣을려고 하니 무지 어렵네요
:
: 혹시 비슷한 작업을 하셧거나 좋은 의견 있으시면 아낌없는 조언 부탁드립니다.
: 부디 여러 고수분들의 많은 관심 부탁드립니다.
:
: 그럼 수고하세요^^*

+ -

관련 글 리스트
39815 [질문]Edit에 콤마 넣는 방법 궁금이 854 2005/04/13
39839     [답변] 문자열에서 특정 문자를 제거하는 법과 문자 입력 막기 정성훈.해미 3251 2005/04/15
39816     Re:[질문]Edit에 콤마 넣는 방법 옥이 1404 2005/04/13
39823         Re:Re:[질문]Edit에 콤마 넣는 방법 궁금이 1850 2005/04/14
39824             Re:Re:Re:[질문]Edit에 콤마 넣는 방법 옥이 908 2005/04/14
39826                 Re:Re:Re:Re:[질문]Edit에 콤마 넣는 방법(test소스) 궁금이 1010 2005/04/14
39827                     Re:Re:Re:Re:Re:[질문]Edit에 콤마 넣는 방법(test소스) 옥이 1056 2005/04/14
39828                         Re:Re:Re:Re:Re:Re:[질문]Edit에 콤마 넣는 방법(test소스)에러발생 궁금이 924 2005/04/14
39831                             Re:Re:Re:Re:Re:Re:Re:[질문]Edit에 콤마 넣는 방법(test소스)에러발생 옥이 1125 2005/04/14
39834                                 Re:Re:Re:Re:Re:Re:Re:Re:일단 해결;; 2HB 1082 2005/04/14
39838                                     Re:Re:Re:Re:Re:Re:Re:Re:Re:StringReplace 사용하세용 juppie 1521 2005/04/15
39859                                         Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:답변감사합니다 궁금이 873 2005/04/16
39860                                             Re:Re:Re:Re:Re:Re:Re:Re:Re:Re:Re: 사용법 2HB 1329 2005/04/16
39855                                         StringReplace 가 있었군요 ㅡ.ㅡ 볼레롱 1610 2005/04/15
39835                                     Re:Re:Re:Re:Re:Re:Re:Re:Re:일단 해결;; 감사합니다^^* 궁금이 1196 2005/04/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.