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 :

problème test de la zone d'édition , c++ builder


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut problème test de la zone d'édition , c++ builder
    bonjour à tous , comme je l'ai dis hier ,je débute avec c++ builder , et j'ai essayé pour commencer avec l'aide d'un tuto de faire un petit convertisseur Euro-Dinar , en prenant 1 e = 135 Da , bref , l'applic fait la bonne conversion , mais quand j'efface la valeur tapé, je me retrouve avec une erreur et je pense que c'est à cause du StrToFloat mais je n'en suis pas sûr , voila le bout de code qui traite ce problème :
    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
     
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
       DecimalSeparator='.';
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::ZoneKeyPress(TObject *Sender, char &Key)
    {
     if ((Key < 48 || Key > 57)
      && Key != VK_BACK
      && Key != VK_DELETE
      && Key != DecimalSeparator)
      Key = 0;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::DinarZoneChange(TObject *Sender)
    {
      double valeur = 0 ;
      try {
           // l'exception sera déclancher si le contenue de la zone est vide
           valeur = StrToFloat(DinarZone->Text) ;
          }
      catch (...)
          {
           // On ne fait rien, c'est le but recherché
          }
      valeur /= 135;
      // On supprime la gestion de l'événement OnChange pour la
      // zone d'édition cible
      EuroZone->OnChange = 0;
     
      EuroZone->Text = EuroZone->Text.FloatToStrF(valeur, AnsiString::sffFixed, 15, 2);
     
      // On restaure la gestion de l'événement OnChange
      EuroZone->OnChange = EuroZoneChange;
    }
    la video de mon pb :
    [ame]http://www.youtube.com/watch?v=0AK3P39DyLA[/ame],
    merci pour vos suggestions et remarques ...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     if ( EuroZone->Text.Length() > 0 ) {  conversion }
    Peut etre faut il traiter le fait que l edit puisse etre vide

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut j'ai essayé mais sans succès !
    j'essay d'arranger avec votre proposition en ajoutant la ligne suivante :
    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
     
     && (DinarZone->Text.Length()!=0 || EuroZone->Text.Length() !=0)
     // le résultat : 
    void __fastcall TForm1::ZoneKeyPress(TObject *Sender, char &Key)
    {
     if
      (
       (Key < 48 || Key > 57)
       && Key != VK_BACK
       && Key != VK_DELETE
       && Key != DecimalSeparator
       && (DinarZone->Text.Length()!=0 || EuroZone->Text.Length() !=0)
      )
      Key = 0;
    }
    mais j'ai tjr la meme erreur , est-je bien fais ??

  4. #4
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 40
    Par défaut c'est bon , c'est réglé !!!
    merci bcp , le problème vient d’être réglé ,
    il fallait justement ajouté la condition mais dans try
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( EuroZone->Text.Length() > 0 )
    valeur = StrToFloat(EuroZone->Text);
    else
    valeur = 0;
    merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2006, 17h54
  2. [Tableaux] Problème test script
    Par masseur dans le forum Langage
    Réponses: 6
    Dernier message: 03/12/2005, 18h48
  3. Problème d'insertion dans zone de texte
    Par roots_man dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/06/2005, 11h21
  4. Passer de la zone d'édition vers une instruction sql
    Par tripper.dim dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 14h44

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