home *** CD-ROM | disk | FTP | other *** search
/ Prima Shareware 3 / DuCom_Prima-Shareware-3_cd1.bin / PROGRAMO / C / OOPSV / OOPSLIB.ZIP / STATEERR.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-15  |  3.3 KB  |  122 lines

  1. //===============================================
  2. //===== REALISATION DES CLASSES D'EXCEPTION =====
  3. //===============================================
  4.  
  5. #include "state.cfg"
  6.  
  7. #include "stateerr.hpp"
  8. #include "msgerror.h"
  9.  
  10. #include <string.h>
  11.  
  12. //----- conditionnel car affichage
  13. #if STATE_SYSTEME == STATE_DOS
  14. #include <iostream.h>    // pour les COUT
  15. #endif
  16. #if STATE_SYSTEME == STATE_WINDOWS
  17. #include <owl\dialog.h>
  18. #include <owl\controlb.h>
  19. #endif
  20.  
  21. /* ===== Classe "StateError" ===== */
  22. StateError::StateError(int code)
  23. {
  24.   codeError = code;
  25. }
  26. StateError::~StateError()
  27. {
  28. }
  29. void StateError::display()
  30. { /* Cette methode ne doit normalement jamais etre executee          */
  31.   /* En effet, Il ne doit jamais exister d'instance de cette classe. */
  32.   /* Cependant, pourqu'il soit possible d'ecrire des gestionnaires   */
  33.   /* d'exception de la forme :                                       */
  34.   /*      catch(StateError erreur) { erreur.display(); }             */
  35.   /* la classe "StateError" ne peut pas etre rendue virtuelle en     */
  36.   /* faisant de la methode "StateError::display" une methode         */
  37.   /* virtuelle pure. Serait-ce une limitation du C++ [:->            */
  38.  
  39. #if STATE_SYSTEME == STATE_DOS
  40.   cout << "Erreur: Classe de l'exception incorrecte !!!"  << endl;
  41. #endif
  42. #if STATE_SYSTEME == STATE_WINDOWS
  43.   MessageBox(0,"Erreur: Classe de l'exception incorrecte !!!","STATE EXCEPTION",MB_OK);
  44. #endif
  45. }
  46.  
  47. /* ===== Classe "StateInternalError" ===== */
  48. StateInternalError::StateInternalError(int code):StateError(code)
  49. {
  50. }
  51. StateInternalError::~StateInternalError()
  52. {
  53. }
  54. void StateInternalError::display()
  55. {
  56. #if STATE_SYSTEME == STATE_DOS
  57.   cout << "StateInternalError : "  << InternalErrorMsg[codeError] << endl;
  58. #endif
  59. #if STATE_SYSTEME == STATE_WINDOWS
  60.   char texte[512];
  61.   strcpy(texte,"StateInternalError :\n");
  62.   strcat(texte,InternalErrorMsg[codeError]);
  63.   MessageBox(0,texte,"STATE EXCEPTION",MB_OK);
  64. #endif
  65. }
  66.  
  67. /* ===== Classe "StateBehaviorError" ===== */
  68. char StateBehaviorError::textInfo[text_info_size]; 
  69.   /* definition OBLIGATOIRE car dans "stateerr.hpp" */
  70.   /* il ne s'agit que d'une DECLARATION.            */
  71.  
  72. StateBehaviorError::StateBehaviorError(int code,char* texte):StateError(code)
  73. {
  74.   if (texte)
  75.   {
  76.     strcpy(StateBehaviorError::textInfo,texte);
  77. #ifdef TRACE
  78. #if STATE_SYSTEME == STATE_DOS
  79.     cout << "Creation StateBehaviorError. textInfo = " <<  textInfo << endl;
  80. #endif
  81. #endif
  82.   }
  83.   else
  84.   {
  85. #ifdef TRACE
  86. #if STATE_SYSTEME == STATE_DOS
  87.     cout << "Creation StateBehaviorError SANS textInfo " << endl;
  88. #endif
  89. #endif
  90.     StateBehaviorError::textInfo[0]='\0';
  91.   }
  92. }
  93.  
  94. StateBehaviorError::~StateBehaviorError()
  95. {
  96. #ifdef TRACE
  97. #if STATE_SYSTEME == STATE_DOS
  98.     cout << "Destruction StateBehaviorError << endl;
  99. #endif
  100. #endif
  101. }
  102. void StateBehaviorError::display()
  103. {
  104. #if STATE_SYSTEME == STATE_DOS
  105.   cout << "StateBehaviorError : "  << BehaviorErrorMsg[codeError]; 
  106.   if (StateBehaviorError::textInfo[0])
  107.   {
  108.     cout << " [" << StateBehaviorError::textInfo << "]";
  109.   }
  110.   cout << endl;
  111. #endif
  112. #if STATE_SYSTEME == STATE_WINDOWS
  113.   char texte[512];
  114.   strcpy(texte,"StateBehaviorError :\n");
  115.   if (StateBehaviorError::textInfo[0])
  116.   {
  117.     strcat(texte,StateBehaviorError::textInfo);
  118.   }
  119.   MessageBox(0,texte,"STATE EXCEPTION",MB_OK);
  120. #endif
  121. }
  122.