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 :

Aprés formatage d'un Edit, je peux pas faire de calcul, ni d'affectation


Sujet :

C++Builder

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut Aprés formatage d'un Edit, je peux pas faire de calcul, ni d'affectation
    Bonjour tout le monde,

    Aprés formatage d'un Edit, je peux pas faire de calcul, ni d'affectation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    float xSum=1678.56;
     
    Edit1->Text=FormatFloat("##,###,##0.00",xSum);
    .
    .
    .
     
    Table1MONTANT->Value=StrToFloat(Edit1->Text);
    message d'erreur :

    '1 678.56' is not a valid floating point value


    Remarequer l'espace de séparateur des milliers.

    Comment peut on reformater le Edit1 ?

    J'ai mets cette solution :

    Aprés affichage, je formate mon Edit pour enlever l'espace de séparateur des milliers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1->Text=FormatFloat("#######0.00",xSum);
    mais ca ne marche pas

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    le problème provient du séparateur de décimale.
    Regardez dans l'aide à propos de StrToFloat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    La variable globale DecimalSeparator définit le caractère qui doit être utilisé
    comme séparateur décimal. Le séparateur des milliers et les symboles
    monétaires ne sont pas admis dans la chaîne.
    Si S ne contient pas une valeur valide, StrToFloat déclenche
    une exception EConvertError.
    On rencontre le même genre de problème en VBA.
    Il faut faire en sorte que lorsque l'utilisateur tape un '.' ou une ',', de remplacer ce caractère par le séparateur de décimale définit dans Windows.

    En espérant que cela réponde à votre problème...

  3. #3
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Je ne sais pas s'il existe une fonction toute faite pour ce problème.

    Par contre, en attendant une solution plus courte :

    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
     
    double __fastcall TForm1::FormatToFloat(AnsiString N)
    {
    AnsiString R = "";
    char c;
    for(int j = 1; j <= N.Length(); j++)
        {
        c = N[j];
        if(((c >= '1') && (c <= '9')) || (c == DecimalSeparator))
            {
            R = R + N[j];
            }
        }
    return R.ToDouble();
    }
    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double rSum = FormatToFloat(Edit1->Text);
    Sans doute à améliorer !

    A plus !

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    J'ai bricolé une autre solution, pour éviter l4utilisation de Edit!, je déclare une variable accessible dans tout ma Form1, xVar1, et a chaque modification au affectation de Edit1 je met cette variable a la meme valeur>
    Comme ca j'ai mon affichage formaté et le traitement se fait avec xVar1, aprés chaque traitement j'affecte xVar1 a Edit1.

    Et sa marche.

    Avant cette solution, j'ai pensser a la meme sol de henderson au je remercie mais j'aurai plus de code.

    Je remercie aussi rtg57.

Discussions similaires

  1. [AC-97] Pas de menu "Compléments" (peux pas faire de package)
    Par BornToBe dans le forum Runtime
    Réponses: 4
    Dernier message: 15/05/2012, 14h28
  2. Réponses: 23
    Dernier message: 14/09/2010, 18h15
  3. [AC-2003] je ne peux pas faire l'enregistrement
    Par mmcd35 dans le forum IHM
    Réponses: 1
    Dernier message: 15/05/2009, 10h06
  4. Réponses: 2
    Dernier message: 09/03/2009, 13h14
  5. pourquoi je peux pas parler pgplsql ?
    Par blob.b dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/09/2003, 23h22

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