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
[42979] Re:Re:TCSpinEdit에서의 EConvertError 처리에 대해서 묻고 싶습니다.(자답)
김태선 [jsdkts] 1061 읽음    2005-12-19 16:33
릴리즈 버전이 아니라도 디버그 모드로 IDE에서 실행을 바로 시키지만 않으면 예외 에러는 나지 않습니다.
예외가 발생하지만 사용자가 처리하기 때문에.

if (Text.Trim() == "")
  Text = "0";
Result = Text.ToInt();

식으로 코드를 보충해주면 굳이 에러 체크가 필요없기도 합니다.
숫자외에 문자 입력을 허용한다면 문자에 의한 에러를 대비하려면
int value = 0;
sscanf(Text.c_str(), "%d", &value);
식을 읽으면 됩니다.
아무래도 스핀에디터에서는 숫자만 입력하게 하는게 좋겠죠.
그리고 초기에 값을 넣어주면 보다 편리할 것으로 생각됩니다.

이런 류의 에러를 막는 것은 아주 쉬운 일이니 조금만 연구하면 됩니다.

두번째 문제는 컴포넌트를 수정해서 재설치하시면 되는 문제입니다.
TCSpinEdit 컴포넌트는 samples 탭에 설치되어 있는 것으로
Component->install package 메뉴에서 bcbsmp.bpk 에 해당하는 컴포넌트를 찾아
제거한뒤 수정된 것을 다시 컴파일해서 패키지를 설치하면 됩니다.
하지만 이런 간단한 문제를 위해 그렇게 하는 것은 불필요해 보입니다.
이미 충분히 에러에 대비하면서 사용할 수 있도록 고려되어 있기 때문입니다.

기본 컴포넌트가 문제가 있어도 가급적 수정하지 말고
수정이 필요하다면 소스를 수정하고 클래스명도 바꾸어 새로운 패키지로 등록하는 것이
좋습니다.


참고하세요 ^^



이정형 님이 쓰신 글 :
: 1 번 같은 경우 릴리즈 버전으로 컴파일해서 따로 실행시키니 되네요.
: (빌더에서 run시키지 않고)
: 이게 대체 무슨 삽질이었는지 -_-;
:
:
: 이정형 님이 쓰신 글 :
: : 안녕하세요.
: :
: : 프로젝트에서 C++ 빌더 6.0의 TCspinEdit를 사용하는 일이 생겼는데 에디터 란을 공란으로 두고 Up/Down 이벤트 발생시키면 EConvertError 발생하네요.
: : 빌더내의 Example 소스중에 CSpinEdit에 관한게 있어서 살펴보니 아래와 같은 내용이더라고요.
: : try/catch로 에러 처리를 해서 실제로 동작은 제대로 하는데 에러메시지가 나오니 영 보기 안좋네요 -_-;
: : 하다 못해 Example 코드를 어떻게 손대서 lib에 넣을 수 있으면 어떻게든 될거 같습니다만... 하는 방법을 모르겠네요.
: :
: : 그러니까 질문은 두가지 입니다.
: : 1. EConvertError가 발생하더라도 화면에 경고메시지 뿌리지 않는 방법이 있습니까?
: : 2. 아래의 소스 코드를 따로 컴파일 해서 기존의 라이브러리를 대체 할 수 있는 방법이 있습니까?
: :
: : ps. 라이브러리 자료실의 Rxlib인가도 받아서 해봤는데 똑같더라고요-_-;;
: : Up/Down 이벤트 캐치할 수는 있는데 이미 에러나고 잡히니 -_-;
: :
: : /* CSpin.h 내용 */
: : __property long Value = {read=GetValue, write=SetValue, nodefault};
: :
: : /* CSpin.cpp 내용 */
: : /* UP 이벤트 발생 */
: : void __fastcall TCSpinEdit::UpClick(TObject *Sender)
: : {
: :   if (ReadOnly)
: :     MessageBeep(0);
: :   else Value += FIncrement;
: : }
: :
: : /* Down 이벤트 발생 */
: : void __fastcall TCSpinEdit::DownClick(TObject *Sender)
: : {
: :   if (ReadOnly)
: :     MessageBeep(0);
: :   else
: :     Value -= FIncrement;
: : }
: :
: : /* Value read */
: : long __fastcall TCSpinEdit::GetValue(void)
: : {
: :   long Result;
: :   try {
: :     Result = Text.ToInt(); /* <- Convert Error 발생 */
: :     }
: :   catch(...) {
: :       Text=AnsiString((int)FMinValue);
: :     return FMinValue;
: :   }
: :   return Result;
: : }

+ -

관련 글 리스트
42975 TCSpinEdit에서의 EConvertError 처리에 대해서 묻고 싶습니다. 이정형 1260 2005/12/19
42976     Re:TCSpinEdit에서의 EConvertError 처리에 대해서 묻고 싶습니다.(자답) 이정형 1315 2005/12/19
42979         Re:Re:TCSpinEdit에서의 EConvertError 처리에 대해서 묻고 싶습니다.(자답) 김태선 1061 2005/12/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.