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 :

Problème avec try-except


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut Problème avec try-except
    Bonjour à tous,
    j'ai un program delphi qui appelle une dll delphi dans laquelle j'utilise un try-except.
    Dans ce try-except je fais un StringToFloat. Lorsque cette commande plante, le except doit prendre la main.
    Mon pb vient du fait que ceci marche très bien dans un programme, et lorsque j'essaie de le reporter dans mon programme : ça plante (le except ne prend pas la main).
    Dans mon programme : les déclarations des fcts de la DLL delphi sont bonnes, les appels des fcts sont les mêmes que dans l'autre programme, les options de compil sont les mêmes...je ne comprends pas.
    Qu'aurai-je pu oublier ?
    Merci

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par steph_1 Voir le message
    Qu'aurai-je pu oublier ?
    Merci
    Peut-être de nous donner plus de détails ou la portion de code qui plante (s'il ne fait pas 500 lignes) parce que le genre de question : "J'ai tout bien fait, mais ça plante, pouvez-vous me dire pourquoi ?" est un peu difficile à répondre
    Roland

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    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
     
    var
      CurentCtrl: TWinControl;
      m_temp:DWORD;
    ....
     
      try
                CurentCtrl:= m_Edit;
                m_temp
                  := DWORD(Floor(StrToFloat(m_Edit.Text)*1000));
       except
        on E:Exception do
          begin
            DgrInvalidValue(E);
            CurentCtrl.SetFocus;
            Result:=FALSE;
          end;
      end;
    Le pb vient du 'StrToFloat' lorsque la valeur est nulle, le except ne prend pas la main.

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Et si tu supprimes le try et le bloc except, tu as bien l'erreur ?
    Roland

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    oui j'ai bien l'erreur, il plante sur le StrToFloat.

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Et qu'est-ce qui te fait dire que le bloc except ne s'exécute pas ?
    Si tu exécutes pas à pas, le programme n'y entre pas ?
    Qu'est censé faire DgrInvalidValue ?
    Roland

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    DgrInvalidValue fait juste un MessageBox.
    Le prog n'entre pas dans le except.
    Il plante bien sur le StrToFloat lorsque je lui mets une chaîne vide à transformer en float.

  8. #8
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Si :
    1/ l'erreur se déclenche,
    2/ le programme n'entre pas dans le bloc except alors que celui-ci devrait afficher un message,
    je ne comprends pas. Désolé !
    Roland

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    Peut-être qu'il serait plus juste d'utiliser une autre fonction de Delphi TryStrToFloat (à partir de D7, cela économise mémoire et temps processeur lié au déclenchement d'exception) qui est en fait appelé par StrToFloat et si elle renvoie false cela déclenche une exception, ...


    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
    var
      CurentCtrl: TWinControl;
      Value: Double;
      m_temp:DWORD; // attention aux valeurs hors limites !
    ....
     
       CurentCtrl:= m_Edit;
       Result := Assigned(m_Edit); 
       if Result then
       begin
         Result := TryStrToFloat(m_Edit.Text, Value);
         if Result then
            m_temp := DWORD(Floor((Value)*1000)) // voir le type Currency !
         else
           m_temp  := 0;
       end;
     
       if not Result then
       begin
          DgrInvalidValue(???);
          CurentCtrl.SetFocus;
       end; 
      end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. problème avec try except et try finally !?
    Par jano_dave dans le forum Débuter
    Réponses: 2
    Dernier message: 15/09/2009, 14h55
  2. Réponses: 8
    Dernier message: 08/11/2008, 22h16
  3. Problème avec les exceptions
    Par Mucho dans le forum wxWidgets
    Réponses: 3
    Dernier message: 04/10/2006, 17h10
  4. Problème avec Try ... Except
    Par Kcintim dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 15h31
  5. probléme avec les exceptions
    Par sofiane44 dans le forum Langage
    Réponses: 1
    Dernier message: 10/01/2006, 16h30

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