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 :

erreur virgule flottante sur certains PC ?


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut erreur virgule flottante sur certains PC ?
    salut tous,

    j'ai un ami qui m'a donné son projet qu'il a fait sur C++ builder, il l'a lancé avant sur son PC et il fonctionne (j'ai pu le voir).

    j'ai installé la même version que lui de C++ Builder, j'ai lancé le même fichier .bpr (projet) mais ça ne marche pas

    voici l'erreur que ça m'affiche: (cf. piece jointe)

    s'auriez vous comment resoudre ce probleme? merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    OS en Anglais ou Français
    Séparateur en . ou ,
    voir DecimalSeparator
    C'est pourtant clairement écrit dans le message d'erreur, ensuite, il faut juste savoir qu'en français, on utilise la virgule et non le point !
    Suffit de faire le test dans Excel, il n'acceptera le point que sur un OS Anglais (ou autre pays utilisant ce séparateur) et la virgule sur un OS Français

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci le Troll

    en fait j'avais bien compris le message mais ça me parait bizarre; ça fonctionne chez mon amis qui a C++Builder en francais mais ça ne marche pas chez moi pourtant j'ai aussi C++Builder en francais.

    Pour resoudre mon probleme, si j'ai bien compris, il faut que je remplace tous les "." du programme par des "," et j'aurais plus de soucis de virgule flottante?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Seul les nombres stockés en chaine sont concernés !
    C'est tout de même assez rare dans le code ! Je dirais même quasi-inexistant !
    En général, on utilise une constante type double, idem dans la DB, c'est aussi un vrai type
    Parcontre, dans des fichiers Texte ou ini, tu devras juste forcer FormatSettings.DecimalSeparator dans tes StrToFloat !
    Pour la saisie dans un TEdit, il faut laisser l'utilisateur utiliser le séparateur de sa langue !

    Ne confond pas C++Builder Français et l'OS en Français
    Le . ou , c'est en fonction de l'OS pas de C++Builder
    Vérifie tes options régionnales (sous Vista, il y a avait un problème de compatibilité d'options, il faut re-selectionner la langue)

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut BdidB
    C'est parametrable comme ceci
    panneau de configuration
    region et langue
    parametres supplementaires
    nombres
    symbole decimal ( soit "," soit "." )

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Seul les nombres stockés en chaine sont concernés !
    c'est à dire lorsque j'ai une "chaine de characteres" où les caractères sont des nombres ? c'est bizarre comme erreur ...

    Citation Envoyé par ShaiLeTroll Voir le message
    Parcontre, dans des fichiers Texte ou ini, tu devras juste forcer FormatSettings.DecimalSeparator dans tes StrToFloat !
    Pour la saisie dans un TEdit, il faut laisser l'utilisateur utiliser le séparateur de sa langue !
    je n'ai pas bien compris ceci forcer FormatSettings.DecimalSeparator dans tes StrToFloat !"", dans mes fichiers texte je dois remplacer les . par des vigules ?

    Citation Envoyé par ShaiLeTroll Voir le message
    Ne confond pas C++Builder Français et l'OS en Français
    Le . ou , c'est en fonction de l'OS pas de C++Builder
    Vérifie tes options régionnales (sous Vista, il y a avait un problème de compatibilité d'options, il faut re-selectionner la langue)
    peut etre que mon amis etait en option regionnales anglaises et le mien est en francais c pour cela que ça beug...

    Citation Envoyé par blondelle Voir le message
    Salut BdidB
    C'est parametrable comme ceci
    je vais regarder merci beaucoup

    ----------------
    merci tous pour votre aide
    ----------------

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Citation Envoyé par BdidB Voir le message
    c'est à dire lorsque j'ai une "chaine de characteres" où les caractères sont des nombres ? c'est bizarre comme erreur ...

    Pourquoi tu parles d'erreur, c'est toi qui veut convertir la valeur "0.00001", tu es débutant, tu ne semble pas bien comprendre ce que l'on dit !

    Citation Envoyé par BdidB Voir le message
    je n'ai pas bien compris ceci forcer FormatSettings.DecimalSeparator dans tes StrToFloat !"", dans mes fichiers texte je dois remplacer les . par des vigules ?
    Faudrait lire la documentation, je te mets les liens c'est pour les lire
    SysUtils.StrToFloat
    Tu noteras qu'il existe une seconde forme où l'on peut définir pour cet appel, le contexte de conversion via SysUtils.TFormatSettings.DecimalSeparator

    Ce n'est pas le fichier qui doit s'adapter mais le programme, c'est à toi de savoir ce qu'il faut utiliser comme séparateur décimal
    Imaginons un fichier CSV, il faut savoir qu'en france c'est ; le séparateur pour conserver , pour les nombres
    aux US, c'est , le séparateur de champ car c'est le . le marquer décimal !

    Si tu as un système d'import générique de fichier, tu dois proposer à ton utilisateur une interface qui lui permet de configurer l'origine de fichier (et donc les séparateurs à utiliser)
    Si tu n'as qu'un seul type de fichier à importer et que c'est juste un travail d'étudiant, tu peux coder le . en dur pour tes StrToFloat


    Citation Envoyé par BdidB Voir le message
    peut etre que mon amis etait en option regionnales anglaises et le mien est en francais c pour cela que ça beug...
    Effectivement, en français il faut une virgule

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je crois que je comprends mieux à présent, merci en tout cas pour ton aide

    A+

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

Discussions similaires

  1. [AC-2007] Erreur d'exécution sur certains filtres en mode runtime
    Par joeyr dans le forum Runtime
    Réponses: 2
    Dernier message: 25/05/2012, 11h14
  2. [TortoiseSVN] Erreur de commit sur certains dossiers seulement
    Par loukoum82 dans le forum Subversion
    Réponses: 2
    Dernier message: 24/02/2012, 11h16
  3. Virgule Flottante sur PIC18F
    Par Kartoon67 dans le forum C
    Réponses: 4
    Dernier message: 18/05/2011, 19h17
  4. Erreur Signcode 80004005 sur certains PC
    Par pilpil dans le forum Applets
    Réponses: 3
    Dernier message: 21/03/2007, 01h46
  5. Réponses: 3
    Dernier message: 12/04/2006, 11h07

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