Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Inscrit en
    décembre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 24
    Points : 5
    Points
    5

    Par défaut BCB XE2 problème de débordement sur long double

    Bonjour,
    avec BCB XE2, lorsque je lance plusieurs fois d'affilée (5/6 fois) le code suivant, j'ai une exception EInvalidOp non interceptée par le catch(...) qui est lancée.
    Avec BCB 2010, je n'ai pas ce problème.
    Pour tester, vous pouvez simplement créer un projet nouveau VCL et mettre un bouton sur la fiche qui exécute ce code !
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    		try {
    			long double d=1000000.0;
    			int n=0;
    			while (++n<100000)
    				d+=d;
    		}
    		catch(...) {}
    Je ne vois pas où est le problème. Et en plus, j'aimerais intercepter l'exception au bon endroit, pas dans Application->OnException !
    Une idée ?

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 039
    Points : 14 236
    Points
    14 236

    Par défaut

    Cela ressemble à bug de la version beta ça !
    Au tout débug de la XE2, selon les options BPL et RTL dynamique cela ne capturait pas les exceptions

    essaye un catch dédié


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    catch(const EInvalidOp &eio) 
    {
      ShowMessage(eio->Message);
    }
    catch(const Exception &e) 
    {
      ShowMessage(e->ClassName());
    }
    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

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  3. #3
    Invité régulier
    Inscrit en
    décembre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : décembre 2003
    Messages : 24
    Points : 5
    Points
    5

    Par défaut merci pour ta réponse

    ce qui m'étonne le plus, c'est que le problème n'intervient qu'après avoir lancé 5/6 fois le programme. Au début, j'ai crû que j'avais un mauvais bug quelque part (mémoire libérée 2 fois), mais je suis reparti sur un projet vierge avec uniquement ce bout de code, et le problème était toujours là. Donc ce n'est pas moi. Mais pourquoi 4/5 fois une exception overflow classique puis une fois EInvalidOp ?... J'ai bien sûr essayé d'intercepter explicitement les exceptions en question, sans succès. Je vais bientôt passer sur XE3. J'espère que le problème aura disparu...

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •