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
[47889] Re:Re:Re:Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법?
강재호.만해 [greenuri] 1078 읽음    2007-01-25 13:30
catch (EDatabaseError& E)
        {
        EDBEngineError* Error;
        Error = dynamic_cast<EDBEngineError*>(&E);   <-- 형 변환 부분.
        if ( Error != NULL )
            {
            ShowMessage(Error->Errors[Error->ErrorCount]->Message);
            }
        ShowMessage(E.Message);
        dbx_MainCon->Rollback(TD); // on failure, undo the changes
        ErrorLogs("TDM_GDB::DataQueryExecute - 2 : ", sls_Query->Strings[k] + "\n\n");
        i_Return = GetLastError();
        }

저 위에 코드를 보시면 아시겠지만

EDatabaseError &E; 변수를 가져와서

EDBengine* Error;
Error = dynamic_cast<EDbEngineError*>(&E); <-  여기서 형변환을 시킵니다.

if (Error != NULL )  <- 여기서 Error 이 NULL이라서 여기 밑의 ShowMessage를 실행 시키지 않고 있네요
  {
  ShowMessage(Error->Errors[Error->ErrorCount]->Message);
  }

혹시나 제가 뭘 잘못 할고 있는건 아닌가 싶어서

Ctrl+F7 키를 눌러서 해봤느데 같은 내용이 나오네요 어떻게 해야 할런지 쩝~ ^^


정재만 님이 쓰신 글 :
: 꽁수 한가지 가르쳐 드리겠읍니다(권장안함)
:
: 메세지로 출력되는 에러코드를 추출하는것도 한가지 방법이긴 합니다..
:
:
: 정재만 님이 쓰신 글 :
: : 형 변환이 안되고 있다는 말씀이 컴파일 에러가 난다는 말인가요?
: :
: : 아니면 형변환후 기본값이 제대로 출력이 안된다는 말씀인지?
: :
: :
: : dynamic_cast이후 TDBError *E = Err->Errors[i];로 함번 해보셨는지?
: :
: :
: : 강재호.만해 님이 쓰신 글 :
: : : catch (EDatabaseError& E)
: : :         {
: : :         EDBEngineError* Error;
: : :         Error = dynamic_cast<EDBEngineError*>(&E);   <-- 형 변환 부분.
: : :         if ( Error != NULL )
: : :             {
: : :             ShowMessage(Error->Errors[Error->ErrorCount]->Message);
: : :             }
: : :         ShowMessage(E.Message);
: : :         dbx_MainCon->Rollback(TD); // on failure, undo the changes
: : :         ErrorLogs("TDM_GDB::DataQueryExecute - 2 : ", sls_Query->Strings[k] + "\n\n");
: : :         i_Return = GetLastError();
: : :         }
: : : 제 코드에도 저 부분이 있긴 한데요
: : :
: : : 제가 타입 캐스팅을 잘못한건지 EDatabaseError* 에서 EDBEngineError*로 형 변환이 안되고 있네요
: : :
: : : 정재만 님이 쓰신 글 :
: : : : 도움이 될련지
: : : :
: : : : 샘플코드을 참조하세요....
: : : :
: : : : void __fastcall TMainForm::ErrorCheck (TDataSet *TDataSet, EDatabaseError *E, TDataAction &Action)
: : : : {
: : : :   AnsiString S;
: : : :   EDBEngineError *Err = dynamic_cast<EDBEngineError*>(E);
: : : :
: : : :   if (Err) {
: : : :      for (int i = 0; i < Err->ErrorCount; i++) {
: : : :          if (i > 0) AppendStr(S, '\n');
: : : :          TDBError *E = Err->Errors[i];
: : : :          AppendStr(S, Format( "%.4x (%d): %s",
: : : :                               ARRAYOFCONST((E->ErrorCode, E->NativeError,E->Message))));
: : : :      }
: : : :      DatabaseError(S, 0);
: : : :   }
: : : : }

+ -

관련 글 리스트
47881 [만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 강재호.만해 1373 2007/01/25
47882     Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 정재만 1113 2007/01/25
47884         Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 강재호.만해 978 2007/01/25
47885             Re:Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 정재만 912 2007/01/25
47886                 Re:Re:Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 정재만 909 2007/01/25
47889                     Re:Re:Re:Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 강재호.만해 1078 2007/01/25
47907                         Re:Re:Re:Re:Re:Re:[만해] EDataBaseError에서 ErrorCode 뽑아 내는법? 강재호.만해 1251 2007/01/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.