//--------------------------------------------------------------------------- #include #include #include "Common.h" #pragma hdrstop #include "Exception.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TStringTable MessageStringTable; //--------------------------------------------------------------------------- static AnsiString __fastcall GetMessage(const TPException code) { switch (code) { // Error case EC_LIBRARY: return _sys_errlist[errno]; case EC_MEMORY_LACK: return IDS_MESSAGE_MEMORYLACK; case EC_RESOURCE_LACK: return IDS_MESSAGE_RESOURCELACK; case EC_INVALID_PARAMETER: return IDS_MESSAGE_PARAMETER; case EC_INTERFACE_NONE: return IDS_MESSAGE_INTERFACE; case EC_FILE_NOT_CREATE: return IDS_MESSAGE_FILECREATE; case EC_FILE_NOT_EXIST: return IDS_MESSAGE_FILENOT; case EC_FILE_NOT_OPEN: return IDS_MESSAGE_FILEOPEN; case EC_FILE_NOT_ENOUGH: return IDS_MESSAGE_HDDSPACE; case EC_FILE_NOT_READ: return IDS_MESSAGE_FILEREAD; case EC_FILE_NOT_WRITE: return IDS_MESSAGE_FILEWRITE; case EC_DISKETTE_NOT_READ: return IDS_MESSAGE_DISKETTE_NOT_READ; case EC_DISKETTE_NOT_WRITE: return IDS_MESSAGE_DISKETTE_NOT_WRITE; case EC_FORM_NOT_CREATE: return IDS_MESSAGE_FORMCREATE; case EC_CAN_NOT_SCAN: return IDS_MESSAGE_ERRORSCAN; case EC_CLIPBOARD_NOT_OPEN: return IDS_MESSAGE_CLIPOPEN; case EC_CLIPBOARD_NOT_READ: return IDS_MESSAGE_CLIPREAD; case EC_CLIPBOARD_NOT_WRITE: return IDS_MESSAGE_CLIPWRITE; case EC_SCANYARN_READ: return IDS_MESSAGE_SCANYARN; case EC_HIGH_DENSITY: return IDS_MESSAGE_HIGHDENSITY; case EC_3D_FILTER: return IDS_MESSAGE_FILTER; // Warning case EC_UNDO_NONE: return IDS_MESSAGE_UNDONE; case EC_NO_TARGET: return IDS_MESSAGE_NOTARGET; case EC_CANNOT_SAVE256: return IDS_MESSAGE_SAVE256; case EC_FILE_EXIST_ALREADY: return IDS_MESSAGE_FILEEXIST; case EC_NOT_KNITTING: return IDS_MESSAGE_NOTKNITTING; case EC_NO_CLIPBOARDDATA: return IDS_MESSAGE_NOCLIPBOARDDATA; case EC_FONT_NOSUPPORT: return IDS_MESSAGE_FONTNOSUPPORT; case EC_DIR_EXIST_ALREADY: return IDS_MESSAGE_DIREXIST; case EC_FILESAVE_REALLY: return IDS_MESSAGE_REALLYFILESAVE; case EC_NOTEXCHANGE: return IDS_MESSAGE_NOTEXCHANGE; case EC_DELETELAYER_REALLY: return IDS_MESSAGE_DELETELAYER; case EC_UNABLE_UNDO: return IDS_MESSAGE_UNABLEUNDO; case EC_INCORRECT_POINT: return IDS_MESSAGE_INCORRECTPOINT; case EC_NOT_NORMALORFIX: return IDS_MESSAGE_NOTNORMALORFIX; case EC_NOT_TUNNEL: return IDS_MESSAGE_NOTTUNNEL; case EC_WRITE_SENTENCE: return IDS_MESSAGE_WRITESENTENCE; case EC_NOT_CURVE: return IDS_MESSAGE_NOTCURVE; // Information case EC_COLOR_OVERFLOW: return IDS_MESSAGE_OVERFLOW; case EC_COLOR_OVER12: return IDS_MESSAGE_OVER12; case EC_CAN_NOT_CONVERT: return IDS_MESSAGE_ERRORCONVERTBITMAP; case EC_BIG_SIZE: return IDS_MESSAGE_BIGSIZE; case EC_UNABLE_CLIPBOARD: return IDS_MESSAGE_UNABLECLIPBOARD; case EC_UNABLE_INSERT: return IDS_MESSAGE_UNABLEINSERT; case EC_CHOOSEFILE: return IDS_MESSAGE_CHOOSEFILE; } } //--------------------------------------------------------------------------- #ifdef TPDEBUG //--------------------------------------------------------------------------- int __fastcall ShowException(const char *file, const int line, const TPException code, TMsgDlgButtons buttons, const char *msg) { AnsiString Message = Format("%s (%d) : %s", OPENARRAY(TVarRec, (file, line, GetMessage(code)))); if (msg) { switch (code&ET_MASK) { case ET_ERROR: return MessageDlg(Message+"\n"+msg, mtError, buttons, 0); case ET_WARNING: return MessageDlg(Message+"\n"+msg, mtWarning, buttons, 0); case ET_INFORMATION: return MessageDlg(Message+"\n"+msg, mtInformation, buttons, 0); } } else { switch (code&ET_MASK) { case ET_ERROR: return MessageDlg(Message, mtError, buttons, 0); case ET_WARNING: return MessageDlg(Message, mtWarning, buttons, 0); case ET_INFORMATION: return MessageDlg(Message, mtInformation, buttons, 0); } } return 0; } //--------------------------------------------------------------------------- void __fastcall ShowDebug(const char *file, const int line) { MessageDlg(Format("Error : %s (%d)", OPENARRAY(TVarRec, (file, line))), mtInformation, TMsgDlgButtons() << mbOK, 0); } //--------------------------------------------------------------------------- #else //--------------------------------------------------------------------------- int __fastcall ShowException(const TPException code, TMsgDlgButtons buttons, const char *msg) { AnsiString Message = GetMessage(code); if (msg) { switch (code&ET_MASK) { case ET_ERROR: return MessageDlg(Message+"\n"+msg, mtError, buttons, 0); case ET_WARNING: return MessageDlg(Message+"\n"+msg, mtWarning, buttons, 0); case ET_INFORMATION: return MessageDlg(Message+"\n"+msg, mtInformation, buttons, 0); } } else { switch (code&ET_MASK) { case ET_ERROR: return MessageDlg(Message, mtError, buttons, 0); case ET_WARNING: return MessageDlg(Message, mtWarning, buttons, 0); case ET_INFORMATION: return MessageDlg(Message, mtInformation, buttons, 0); } } return 0; } //--------------------------------------------------------------------------- #endif //---------------------------------------------------------------------------