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

Delphi Discussion :

FormatFloat un peu rebelle


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut FormatFloat un peu rebelle
    Bonjour,

    J'ai un petit probleme d'incompréhension.

    Je formate un Edit sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbKmAn_Edit.Text := FormatFloat('###,###,000,00',FieldByName('Nb_Km_Annuel').AsFloat);
    Le Hic, c'est que lors de l'éxecution quand il ya "250000" dans la base en type float,

    il me marque : "250 000"

    or grâce aux "0" je devrais avoir : "250 000,00"

    Ou est le probleme??? Comprenez vous?

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    essaye ceci peut être

    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    normalement

    ca devrait être suffisant
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut
    Seulement quand je veux faire un update il y a erreur!

    Un petit exemple..??

    voici le champ concerné

    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
    WITH  DataModule1.QParamMP DO
    BEGIN
    SQL.clear;
    SQL.add('SELECT * FROM ID_M');
    SQL.Add('WHERE Nom_Pas = '+ QuotedStr(zo2) +'');
    SQL.Add('AND ID_Engin_FK2 = '+ QuotedStr(IDLoco_Edit.Text));
    Open;
    NivMP_Edit.Text :=  FieldByName('Niveau_M').Value;
    PasNominal_Edit.Text :=   FormatFloat('#,###,###.00',FieldByName('Pas_Nominal').AsFloat);
    Rema_Edit.Text :=   FieldByName('Remanence').Value;
    EspMax_Edit.Text :=  FormatFloat('#,###,###.00',FieldByName('Espac_Max').AsFloat);
    Tolerance_Edit.Text :=  FieldByName('Tolerance').Value;
    Lmax_Edit.Text :=   FormatFloat('#,###,###.00',FieldByName('Limit_Max').AsFloat);
    DesPas_Edit.Text :=   FieldByName('Descr_Pas').Value;
    NomPas_Edit.Text :=   FieldByName('Nom_Pas').Value;
    Atelier_ComboBox.Text := FieldByName('Atelier_Directeur').Value;
    Depot_ComboBox.Text := FieldByName('Depot_Titulaire').Value;
    END;
    On appelle donc ses valeurs.


    Et quand je fais un update sur ces valeurs préformatés comme suit :

    (je mets volontairement toute la procédure au cas où:

    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
    Try
    Nb_Km_Annuel := StrToFloat(NbKmAn_Edit.Text);
    Remanence := StrToFloat(Rema_Edit.Text);
    Tolerance := StrToFloat(Tolerance_Edit.Text);
    Pas_Nominal := StrToFloat(PasNominal_Edit.Text);
    Espacement_Maximal := Pas_Nominal + (Pas_Nominal*Tolerance)/100;
    Limite_Maximale := Espacement_Maximal + Remanence*(Nb_Km_Annuel/52);
    except
    begin
    Tolerance_Edit.Text := '';
    Rema_Edit.Text :='';
    NbKmAn_Edit.Text := '';
    PasNominal_Edit.Text := '';
    end;
    end;
    begin
    EspMax_Edit.Text := FloatToStr(Espacement_Maximal);
    LMax_Edit.Text := FloatToStr(Limite_Maximale);
    zo := combobox1.Items[combobox1.ItemIndex];
    WITH DataModule1.QMAJ DO
    BEGIN
    SQL.clear;
    SQL.add('UPDATE ID_M');
    SQL.Add('SET Nom_Pas =:Nom_Pas   , Depot_Titulaire =:Depot_Titulaire ,  Atelier_Directeur =:Atelier_Directeur,');
    SQL.Add('    Niveau_M =:Niveau_M   , Descr_Pas =:Descr_Pas,');
    SQL.Add('    Pas_Nominal =:Pas_Nominal  , Tolerance =:Tolerance  , Espac_Max =:Espac_Max,');
    SQL.Add('    Remanence =:Remanence ,Limit_Max =:Limit_Max');
    SQL.Add('WHERE ID_Engin_FK2 = '+ QuotedStr(zo));
    Paramcheck := True;
    ParamByName('Nom_Pas').AsString :=  NomPas_Edit.text;
    ParamByName('Depot_Titulaire').AsString :=  Depot_ComboBox.text;
    ParamByName('Atelier_Directeur').AsString :=  Atelier_ComboBox.text;
    ParamByName('Niveau_M').AsSmallInt :=  StrToInt(NomPas_Edit.text);
    ParamByName('Descr_Pas').AsString :=  DesPas_Edit.text;
    ParamByName('Pas_Nominal').AsFloat :=  StrToFloat(PasNominal_Edit.text);
    ParamByName('Tolerance').AsInteger :=  StrToInt(Tolerance_Edit.text);
    ParamByName('Espac_Max').AsFloat :=  Espacement_Maximal;
    ParamByName('Remanence').AsInteger :=  StrToInt(Rema_Edit.text);
    ParamByName('Limit_Max').AsFloat :=  Limite_Maximale;
    ExecSQL;
    END;
    J'ai droit à l'erreur :

    EConvertError avec le message "300 000,00' n'est pas une valeur en virgule flottante correcte


    Rappel: 300 000,00 est le champ Pas nominal qui est un réelle.

  5. #5
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Citation Envoyé par forzaxelah
    EConvertError avec le message "300 000,00' n'est pas une valeur en virgule flottante correcte
    C'est normal: '300 000,00' n'est pas un réel mais '300000,00' en est un
    C'est juste la mise en forme (l'espace) que tu dois modifier
    Contrôle aussi si tu as bien une "," et pas un "." comme séparateur dans tes paramètres régionaux, parce que ça rentre aussi en ligne de compte.
    Si c'est le cas, tu peux changer ce paramètre localement dans ton programme en initialisant
    DecimalSeparator := ',';
    Voila
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Par défaut
    c'est bien ce que je pensais...

    Donc je dois reformater pour passer de 300 000,00 à 300000,00 , mais comment faire???

    Par ailleurs n'y a t-il pas une astuce pour pouvoir mettre l'espace mais sans modifier la valeur propre en elle-meme mais juste en "surface" ???
    Par exemple, la meme chose qu'un composant avec son Text et son Name... on ne modifierait que le Text et pas le Name.... (si vous m'avez suivi bravo, j'en ai du mal a lire... )

  7. #7
    Membre confirmé Avatar de maamar1979
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Par défaut probleme déja poser

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

Discussions similaires

  1. FormatFloat pour les entiers !?
    Par Lung dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2003, 15h20
  2. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  3. Utilisation de FormatFloat
    Par Flo. dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h09
  4. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

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