|
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);
: : : : }
: : : : }
|