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

Langage Delphi Discussion :

[D7] Utilisation de try...except...end


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut [D7] Utilisation de try...except...end
    bonjour,

    je cherche à vérifier, si ce que l'utilisateur rentre est bien ce dont le programme a besoin. Je m'explique, l'utilisateur doit rentrer une instruction du type "TIRE 3". de là, j'extrait "TIRE", et "3" dans deux variables (action : string,l'autre nombrefois : integer).

    Mon probleme est le suivant, si l'utilisateur tape "TRE 3", un message d'erreur doit s'afficher, ça jusque là je sais comment faire, par contre s'il rentre "TIRE T3" ou "TIRE GTE", une message d'erreur doit s'afficher. Comment faire pour dire que si distance n'est pas un entier, faire afficher un message ?

    Merci d'avance à tous.

    Si je vous comprenez pas tout, dites le, j'essaierai de faire plus clair !

    PS : j'espère avoir mis le message dans la bonne section, veuillez m'excuser si ce n'est pas le cas, je suis nouveau


    EDIT : merci de voir mon dernier message!

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Voici une possibilité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function saisie:Boolean;
    var distance: integer;
    begin
      result:=False;
      try
        distance := StrToInt(inputbox('Boite de saisie', 'Distance ?', '0'));
        result:=true;
      except
        MessageDlg('Valeur incorrecte', mtError, [mbOK], 0);
      end;
    end;
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    merci, je vais voir avec ça !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    voila ce que j'ai fais

    try
    distance:=strtoint(distance_str);

    except
    write('Erreur sur la distance')
    end;


    mais ça marche pas, j'ai toujours le message barbare de delphi "Project nom.exe raised exception class EConvertError with message "t20" is not valid integer value'.Process stopped. Use Step or Run to continue.

    Comment faire pour que ce message s'affiche pas ? Ou est mon erreur dans le try...except...end;

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Si je place le code suivant derrière un bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
    distance:Integer;
    distance_str:string;
    begin
      try
        distance_str:='T1'; // KO
    //    distance_str:='1'; // Pour le test OK
        distance := strtoint(distance_str);
      except
        ShowMessage('Erreur sur la distance')
      end;
    end;
    Je n'ai pas de problème. Peut cela vient de ton write ?

    A+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    j'avais mis un show avant et ça marché pas non plus, faut pas utiliser un "uses" spécial ?

    j'ai pris ton programme pour le tester chez moivoici le prog entier,
    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
    program Project1;
     
    {$APPTYPE CONSOLE}
     
    uses
      SysUtils,
      Dialogs;
     
    var
    distance:Integer;
    distance_str:string;
    begin
      try
        distance_str:='T1'; // KO
    //    distance_str:='1'; // Pour le test OK
        distance := strtoint(distance_str);
      except
        ShowMessage('Erreur sur la distance')
      end;
    end.
    ça me fais toujours le message d'erreur "Project .... raised exception class EConvertError with message "T1" is not .....

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Voici tout mon code
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    distance:Integer;
    distance_str:string;
    begin
      try
    //    distance_str:='T1'; // KO
        distance_str:='1'; // Pour le test OK
        distance := strtoint(distance_str);
      except
        ShowMessage('Erreur sur la distance')
      end;
    end;
     
    end.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    en mettant exactemment tout ton code j'ai ce message d'erreur "Field Form1.Button1 does not have a corresponding component. Remove the declaration ? "

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Tu dois poser un bouton sur la form1. (nommé Button1)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    j'ai poser le bouton sur form1, une fois lancer, quand je clic que le boutton j'ai rien !!! désolé mais je suis vraiment novice dans tout ce qui est boutton, j'ai uniquement travaillé en application console jusqu'à présent.


    EDIT : ha ça y est j'ai trouvé, par contre il me fait toujours le meme message d'erreur !!!!!


    EDIT 2 : youpiiiiiiii, j'ai trouvé, le probleme venait des options du débuggueur de delphi, il fallait que je décoche "stop on delphi exception!"

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    Si tu as ce message (Je viens de le reproduire...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ---------------------------
    Notification d'une exception du débogueur
    ---------------------------
    Le projet Project1.exe a provoqué une classe d'exception EConvertError avec le message ''T1' n'est pas une valeur entière correcte'.  Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    ---------------------------
    OK   Aide   
    ---------------------------
    Il faut que tu te décoches dans les options du débogger , "Arrêter sur les exceptions Delphi"

    A+

    Ps :Regardes les pièces jointes..


    EDIT : OK bien joué.
    Images attachées Images attachées   

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    merci ! 30s trop tard, je viens de trouver.
    comment tu fais pour l'avoir en français ???

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    158
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 158
    Points : 158
    Points
    158
    Par défaut
    J'imagine que cela vient de ta version de delphi.

    A+

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    ha ok, merci pour tout !
    bon week end

  15. #15
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Cela dit, même quand cette option est cochée, tu peux continuer l'exécution quand la boîte de dialogue arrive en cliquant sur "Exécuter".

Discussions similaires

  1. Try Except End qui n'empêche pas la remontée de l'exception
    Par Just-Soft dans le forum Bases de données
    Réponses: 10
    Dernier message: 24/02/2015, 12h49
  2. Instruction Try except End.
    Par PiPo123 dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2008, 03h02
  3. Comment utiliser (try..except) ?
    Par moukah2 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/12/2007, 12h03
  4. [try except keyerror] récupérer le nom de la variable
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 03/03/2005, 16h59
  5. bloc try/except et API windows
    Par jakouz dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 24/02/2005, 12h21

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