|
형 변환이 안되고 있다는 말씀이 컴파일 에러가 난다는 말인가요?
아니면 형변환후 기본값이 제대로 출력이 안된다는 말씀인지?
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);
: : }
: : }
|