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 :

équivalent de IntToStr (encore et toujours débutant)


Sujet :

Delphi

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut équivalent de IntToStr (encore et toujours débutant)
    Bonjour.

    Je voudrais savoir quel est l'équivalent de StrToInt et de IntToStr pour une variable de type Real

    J'ai essayé RealToStr mais ça ne veut pas passer apparemment...

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    FloatToStr

    NB : en faisant F1 sur IntToStr, tu devrais voir l'unité dans laquelle elle est déclarée, et pouvoir visualiser les autres fonctions de l'unité : cela peut dépanner quand on cherche un nom...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    ok merci mais c'est ce que je viens juste de faire et sur la ligne où je déclare mai variable:

    ça me marque: Float: identificateur non déclaré -_-

    C'est normal que Delphi ne sache pas faire la différence entre une variable et un type de variable?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon en fait je viens de remplacer float par real et là ça marche.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    Bon en fait non ça ne marche pas au final.

    Voilà l'erreur que j'ai:

    opérateur non applicable sur ce type d'opérande

    su ce bouton là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin
     
    Eur := StrToFloat(saisie_francs.Text) div 6.55957;
    ShowMessage('Cela nous fait ' + FloatToStr(eur) + ' Euros.');
    Alors que sur celui ci il marche très bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    begin
     
    Eur := StrToFloat(saisie_francs.Text) * 6.55957;
    ShowMessage('Cela nous fait ' + FloatToStr(eur) + ' Euros.');
    Quelqu'un peut-il m'expliquer la logique?

  6. #6
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    salut

    remplace "div" par "/"
    Akim Merabet

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    ok merci, ça marche cette fois, juste que je m'en étais servi avant et que ça marchait.
    Bizarre...

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    div fonctionne sur les entiers

    pour les types de réels, tu as Single (sur 4 octets), Double (sur 8) et Extended (sur 10) selon la précision nécessaire
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 122
    Points : 62
    Points
    62
    Par défaut
    ok merci.

  10. #10
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    pour les types de réels, tu as Single (sur 4 octets), Double (sur 8) et Extended (sur 10) selon la précision nécessaire
    J'ajouterais également : évite d'utiliser le type Single. Les nombres réels sont des nombres en virgules flottantes. C'est à dire qu'il s'agit de valeur arrondi. Avec un Single, la précision est assez faible et dès que tu commences à enchaîner des calculs tu vas cumuler des erreurs d'arrondis.

    Eur := StrToFloat(saisie_francs.Text) * 6.55957;
    Donc visiblement tes nombres sont en réalités des monétaires.
    Pour les monétaires, le type Currency est peut-être plus appropriés. Il s'agit d'un nombre décimal géré en virgule fixe, avec quatre chiffres après la virgule. Cette fois tu travailles avec des valeurs exactes (enfin, le résultat est quand même arrondi à 4 décimales, mais tu ne risques pas que 1,3 deviennent 1,299999999...).

    Si tu travaille avec une base de données et avec les datasets Delphi, il faut également faire attention aux types des champs et à la façon dont tu les lis :
    - Les champs ftFloat sont des nombres décimaux en virgule flottante, à lire avec AsFloat.
    - le ftCurrency : C'est exactement la même chose qu'un ftFloat : un flottant. La seule différence avec ftFloat c'est que par défaut, Delphi considèrera que le champ représente un monétaire et le formattera à l'affichage en temps que tel.
    - le ftBCD : Il s'agit cette fois tu type décimal en virgule fixe. Il ne s'agit pas d'un nombre au format BCD, mais bel et bien d'un type currency. Il faut le lire avec AsCurrency.
    - le ftFmtBCD : Cette c'est un vrai BCD. Donc un nombre qui stocke une valeur exacte, avec un nombre de chiffres et de décimale définit dans le type du champ. Il faut le lire avec AsBCD, et ne travailler ensuite qu'avec le type TBcd.

    Si tu utilises les autres méthodes de lecture (par exemple AsFloat pour un ftFmtBCD ou ftBCD), le TField fera automatiquement la convertion qui va bien. Mais tu risques de perdre en précision.

Discussions similaires

  1. Réponses: 18
    Dernier message: 06/07/2006, 18h40
  2. Clic droit encore et toujours
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 22/05/2006, 00h26
  3. IE/Firefox... encore et toujours...
    Par maniaco_jazz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 19/02/2006, 23h17
  4. nodes, child et compatibilité... encore et toujours
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 14h26
  5. stencil buffer, encore et toujours
    Par JAimeBienCoderBourre dans le forum OpenGL
    Réponses: 4
    Dernier message: 08/04/2005, 11h16

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