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

  1. #1
    Membre actif 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
    Points : 221
    Points
    221
    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
    @+
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  2. #2
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Membre actif 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
    Points : 221
    Points
    221
    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
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  4. #4
    Membre actif 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
    Points : 221
    Points
    221
    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.
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  5. #5
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    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.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  6. #6
    Membre actif 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
    Points : 221
    Points
    221
    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.
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  7. #7
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Tu utilise quand ton imprimante, si tu à du code dans tes constructeur ca peut venir de la, alors il faudras protégé lesz constructeur, pas le project1.cpp
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  8. #8
    Membre actif 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
    Points : 221
    Points
    221
    Par défaut
    L'appel de l'impression se fait au moment d'un appui sur un bouton. Si je comprend bien le programme que l'on m'a donne;

    Si l'application plante dès le début, c'est peut etre pas à cause de l'imprimante;

    J'ai testé le try & catch dans les constructeurs, mais l'erreur n'est pas détecté.
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  9. #9
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Ca me semble bizard tout de meme, si ca provoque une erreur dans project1.cpp, c'est un constructeur, ou alors un composant qui utilise une imprimante.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  10. #10
    Membre actif 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
    Points : 221
    Points
    221
    Par défaut
    Citation Envoyé par pottiez
    Ca me semble bizard tout de meme, si ca provoque une erreur dans project1.cpp, c'est un constructeur, ou alors un composant qui utilise une imprimante.
    Lorsque je fais du pas à pas dés le début de l'application, j'ai la demande du fichier form.pas ou printer.pas.

    Cela m'a intrigué, et en regardant le fichier project.bpr sous un editeur de texte, j'ai été interpelle par cela :

    PACKAGES = VCL40.bpi VCLX40.bpi VCLJPG40.bpi bcbsmp40.bpi dclocx40.bpi VCLX35.bpi \
    VCL35.bpi VCLDB35.bpi VCLDBX35.bpi bcbsmp35.bpi dclocx35.bpi QRPT35.bpi \
    TEEUI35.bpi VCLSMP35.bpi TEEDB35.bpi TEE35.bpi ibsmp35.bpi NMFAST35.bpi \
    INETDB35.bpi INET35.bpi
    CPortLibCB4.bpi
    Ses fichiers bpi en gras sont de la version précédente de BCB4?
    Cela ne poserait il pas un problème?
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  11. #11
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Il est effectivement possible que ce soit des fichiers de Builder 3.5, ca peut etre du si tu as migré de l'un vers l'autre à un moment donnée, apres peut etre que certain fichier de BCB5 sont les meme depuis BCB3.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  12. #12
    Membre actif 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
    Points : 221
    Points
    221
    Par défaut
    Je travaille avec BCB4. Effectivement l'application a été développée d'abord par BCB3. Bon j'ai modifié cela dans le .bpr. Mais au final j'ai toujours le même problème.

    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  13. #13
    Responsable Magazine

    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 : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Essaye du créé un nouveau projet, et d'y remettre tes classe et ton code, histoire d'avoir un projet nickel sous BCB 4, surtout que BCB 4 à la reputation d'etre le plus bugé de la serie.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  14. #14
    Membre actif 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
    Points : 221
    Points
    221
    Par défaut
    m'aurais pas étonné
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  15. #15
    Membre actif 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
    Points : 221
    Points
    221
    Par défaut
    Bon j'ai reconstruit un projet avec mes sources. Le problème est que BCB4 ne reconstruit pas l'exe.

    Y'a t il un moyen de détecter si il y a une imprimante de brancher à un poste informatique?
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

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