IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Exception d'application avec EPrinter


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut Exception d'application avec EPrinter
    Bonjour tous!

    Je suis entrain de tester une application qui a besoin d'une imprimante.
    Mais si l'imprimante n'existe pas, mon application provoque une classe d'exception EPrinter.

    J'aimerais supprimer ce message par un autre de ma compostion. J'ai donc penser au try {}, catch{} dans la fiche du WinMain

    j'ai donc écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    .....
    try
    {
      Application->Initialize();
      .....
      .....
    }
    catch (EPrinter &e)
    {
        ShowMessage("Pas d'imprimante installée");
        Application->Terminate();
    }
     
    catch(...)
    {
    }
    J'ai ses erreurs là dès que je met le catch(EPrinter &e)
    [C++ Erreur] Cathild.cpp(124): E2303 Nom de type attendu.
    [C++ Erreur] Cathild.cpp(124): E2377 ) manquante dans l'instruction Catch.


    Ne connaissant pas trop le fonctionnement des try & catch, j'aimerai que quelqu'un m'explique ses erreurs.

    merci
    @+

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    le try catch est simple, le programme essaye d'executer le code contenue dans le try, si il n'y arrive pas, il vas voir le catch, et entre dans le catch dons la propriété est l'exception qui à été provoqué, maintenant, cherche quel est la ligne 124, a mon avis c'est la ligne catch(...), qui n'a rien à faire dans ce code, si c'est l'autre c'est qu'il ne connai pas l'exception EPrinter

  3. #3
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    La ligne 124 correspond à la ligne juste au dessus du catch{Eprinter}
    L'erreur EPrinter je l'ai trouvé dans l'aide donc je pensais que cela marcherai. Je vais regardé dans le tableau d'erreur si il y en a une autre.

    Par contre la variable e je ne sais pas trop ce que sait. Je pense que c'est un pointeur qui pointe sur le type d'erreur, Ai je tord ou raison? Elle est déclaré nulle part. C'est une variable propre au système?

    merci de ton aide Pottiez

  4. #4
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    voila pourquoi j'ai utilisé EPrinter :

    EPrinter est la classe des exceptions pour les erreurs d'impression.

    Unité
    printers

    Description

    EPrinter est provoquée lors d'une erreur d'impression. Si, par exemple, une application tente d'utiliser une imprimante qui n'existe pas ou si un travail d'impression ne peut pas être transmis à l'imprimante pour une autre raison, une exception EPrinter est provoquée.

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Ta variable e est un objet de type EPrinter, dont l'adresse est passé au catch, pour lui permettre de récupéré le message d'erreur, si lorsque tu est dans le catch, tu fais un ShowMessage(e), a prioris ca t'affiche l'erreur Windows qui c'est produite.

    Je n'ai pas réagis tout de suite mais ou ce situe ton code ? a priorie, si tu est dans une classe ou une fiche, tu ne devrais pas avoir Application->Initialize() dans ton try.

  6. #6
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    Mon catch se fait dans le project1.cpp. Si je le met dans ma fiche principale, les erreurs décrient plus haut ne sont pas détectées.

    Mon problème est que l'application plante dés le départ (Message : Abnormal ....) si il n'y a pas d'imprimante d'installer. Je pensais contourner ce message par un message de mon cru.

    Je me demande pas si le mal n'est pas plus profond que cela. Lorsque je fais du pas à pas, BCB4 me demande printer.pas.

Discussions similaires

  1. Exception a la fermeture d'une application avec c++ builder
    Par lydafree dans le forum C++Builder
    Réponses: 11
    Dernier message: 28/08/2010, 15h46
  2. Réponses: 10
    Dernier message: 30/06/2004, 13h00
  3. Exception 'instruction privilégiée' avec TDLPort
    Par jphi5 dans le forum C++Builder
    Réponses: 21
    Dernier message: 11/11/2003, 16h40
  4. Conseils pour developper une application avec Oracle
    Par belugha dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2003, 16h03
  5. [VB6]Fermer une application avec VB
    Par Mylou dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/04/2003, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo