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 :

Boite de dialogue d’erreur [BCB6]


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut Boite de dialogue d’erreur [BCB6]
    Bonjour,
    Actuellement, mon application gère les erreurs de chargements de fichiers

    Pour ce faire, j’indique des informations via :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage("Erreur!\nNous vous demandons de bien vouloir reinstallé l'application car il manque le fichier\n\n"+ Chemin +" inexistant");


    Or cette boite de dialogue me pose un petit problème, il n’y a pas d’icône d’erreur
    Par quoi je pourrais remplacer ce code pour qu’il y ais un point d’exclamation ou une autre icône ?

    Actuellement les messages d’erreurs sont dans une fonction.

    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
    18
    19
    20
     
    //Fonction qui vérifie les fichiers ressources et leurs emplacements.
    bool __fastcall TFiche1::PresenceFichier(AnsiString Chemin)
    {
       //Test la présence du fichier.
       if(FileExists(Chemin))
       {
          //Le fichier existe.
          return true;
       }
       else
       {
          //Renvoie un message d'erreur.
          ShowMessage("Erreur!\nNous vous demandons de bien vouloir reinstaller l'application car il manque le fichier\n\n"+ Chemin +" inexistant");
     
          //Ferme l'application.
          Application->Terminate();
          return false;
       }
    }

    Y a-t-il des complication du fait de la position dans le programme ?

    Je vous remercie infiniment pour vos réponses.

    Cordialement.

  2. #2
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Plutôt que d'utiliser ShowMessage, il conviendrait d'utiliser MessageBox avec MB_ICONEXCLAMATION comme dernier paramètre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Ok mais j'ai pas trouvé d'exemple au niveau de la syntaxe.
    Pourriez-vous m'indiquer celle-ci ?

    Merci beaucoup pour vos indications
    Cordialement.

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Voici un exemple avec MessageBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->MessageBox("Erreur!\nNous vous demandons de bien vouloir reinstallé l'application car il manque le fichier\n\n"+ Chemin +" inexistant","Erreur! Fichier Manquant",MB_OK+MB_ICONSTOP);
    D'après l'aide de BCB :

    Citation Envoyé par Aide BCB
    Valeur Signification

    MB_ABORTRETRYIGNORE La boîte message contient trois boutons poussoir : Abandonner, Réessayer et Ignorer.
    MB_OK La boîte message contient un bouton poussoir : OK.
    MB_OKCANCEL La boîte message contient deux boutons poussoir : OK et Annuler.
    MB_RETRYCANCEL La boîte message contient deux boutons poussoir : Réessayer et Annuler.
    MB_YESNO La boîte message contient deux boutons poussoir : Oui et Non.
    MB_YESNOCANCEL La boîte message contient trois boutons poussoir : Oui, Non et Annuler.
    MB_HELP : Aide

    MessageBox renvoie 0 s'il n'y a pas assez de mémoire pour créer la boîte message. Sinon, elle renvoie l'une des valeurs suivantes :

    Valeur Valeur numérique Signification

    IDOK 1 L'utilisateur a choisi le bouton OK.
    IDCANCEL 2 L'utilisateur a choisi le bouton Annuler.
    IDABORT 3 L'utilisateur a choisi le bouton Abandonner.
    IDRETRY 4 L'utilisateur a choisi le bouton Réessayer.
    IDIGNORE 5 L'utilisateur a choisi le bouton Ignorer.
    IDYES 6 L'utilisateur a choisi le bouton Oui.
    IDNO 7 L'utilisateur a choisi le bouton Non.

    Flag Meaning
    MB_ICONEXCLAMATION,
    MB_ICONWARNING
    An exclamation-point icon appears in the message box.
    MB_ICONINFORMATION, MB_ICONASTERISK
    An icon consisting of a lowercase letter i in a circle appears in the message box.
    MB_ICONQUESTION A question-mark icon appears in the message box.
    MB_ICONSTOP,
    MB_ICONERROR,
    MB_ICONHAND
    A stop-sign icon appears in the message box.
    Pour le Flag, tu peux additionner la valeur de ta boite de dialogue qui donnera l'aspect 1 bouton OK ou Aide etc etc avec une icone ...

    Ainsi, pour une MessageBox avec une Icone Aide et un bouton aide, le flag sera :

    MB_HELP+MB_ICONQUESTION


    Voilà, j'espère que ça fera ton bonheur

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Et bien oui
    J'ai pourtant regardé les aides de Borland mais à la recherche de ShowMessage, j'avais pas ces indications la

    Enfin je vais me coder cela de suite
    Encore merci beaucoup
    Cordialement.
    Cette fois j'ai une erreur à la compilation.... A priorie, Chemin ne contient pas de Char... Effectivement c'est de l'AnsiString...

    [C++ Erreur] PanelElec.cpp(43): E2268 Appel à une fonction non définie 'AnsiToChar'
    [C++ Erreur] PanelElec.cpp(43): E2085 Addition de pointeur incorrecte
    Si quelqu'un à une solution
    Cordialement.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Pour récupérer l'AnsiString sous forme de tableau avec un carctère NUL de fin, il suffit de passer les paramètres sous cette forme :
    N.c_str()
    A plus !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Je viens de faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->MessageBox("Erreur!\nNous vous demandons de bien vouloir reinstaller l'application car il manque le fichier\n\n"+ Chemin.C_Str() +" inexistant.","Erreur! Fichier Manquant",MB_OK+MB_ICONSTOP);
    Total:
    [C++ Erreur] PanelElec.cpp(43): E2316 'C_Str' n'est pas un membre de 'AnsiString'
    Merci de votre aide
    Cordialement.

  8. #8
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Ce n'est pas un C et S majuscule mais un c et s minuscule

    Citation Envoyé par Henderson
    N.c_str()

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Je confirme...

    A plus !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Je viens de réessayer avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application->MessageBox("Erreur!\nNous vous demandons de bien vouloir reinstaller l'application car il manque le fichier\n\n"+Chemin.c_str()+" inexistant.","Erreur! Fichier Manquant",MB_OK+MB_ICONSTOP);
    Résultat, pas de compilation:
    [C++ Erreur] PanelElec.cpp(43): E2085 Addition de pointeur incorrecte


    Pourquoi ?

    Merci de vos conseils
    Cordialement.

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    En fait, la concaténation doit s'effectuer dans une AnsiString avec des AnsiString et non avec un pointeur vers char (ce que renvoie c_str()) en plein milieu (ou alors il faut transtyper le tableau... ce qui n'a aucun sens).
    C'est la chaîne résultat qui doit ensuite être transmise comme un tableau avec c_str().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AnsiString N = "Erreur!\nNous vous demandons de bien vouloir reinstaller l'application car il manque le fichier\n\n" + 
    Chemin + 
    " inexistant.";
    Donc pour les paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...(N.c_str(), //premier tableau de char
        "Erreur! Fichier Manquant", //deuxième tableau de char
        MB_OK | MB_ICONSTOP); // les flags
    A plus !

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Draner
    Tu doit creer ta chaine avant de la passer dans la MessageBox.
    Quelque chose comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AnsiString chemin = "c:\\Classeur2.xls";
    AnsiString Chemin = "Erreur!\nDevrait être au premier plan." + chemin;
    Application->MessageBox(Chemin.c_str(), "Look", MB_OK+MB_ICONSTOP);
    Grille

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 149
    Par défaut
    Bon alors en fait cette fois ca marche.
    Comme j'ai cela dans une fonction, pour information au cas ou d'autre se pose cette question je pose le bout de code qui marche:
    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
    18
    19
    20
    21
    22
    23
    24
     
    //Fonction qui vérifie les fichiers ressources et leurs emplacements.
    bool __fastcall TFiche1::PresenceFichier(AnsiString Chemin)
    {
       //Déclaration de variable
       AnsiString Message;
     
       //Test la présence du fichier.
       if(FileExists(Chemin))
       {
          //Le fichier existe.
          return true;
       }
       else
       {
          //Renvoie un message d'erreur.
          Message = "Erreur!\nNous vous demandons de bien vouloir reinstaller l'application car il manque le fichier:\n\n"+Chemin+".";
          Application->MessageBox(Message.c_str(),"Erreur! Fichier Manquant.",MB_OK+MB_ICONSTOP);
     
          //Ferme l'application.
          Application->Terminate();
          return false;
       }
    }
    Je vous remercie infiniment pour vos indications
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb plusieurs boites de dialogues
    Par schnito dans le forum MFC
    Réponses: 10
    Dernier message: 25/02/2004, 21h44
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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