Bonjour a tous
j'aimerais transformer un string en float : StrToFloat (combobox->Text)
mais ca ne marche pas. J'utilise ItemIndex pour retrouver le contenu de Text mais je pense qu'il existe une soluce plus simple ?!?
merci de vos reponses
Salut
Version imprimable
Bonjour a tous
j'aimerais transformer un string en float : StrToFloat (combobox->Text)
mais ca ne marche pas. J'utilise ItemIndex pour retrouver le contenu de Text mais je pense qu'il existe une soluce plus simple ?!?
merci de vos reponses
Salut
A prioris, le code que tu as envoyé est correct. Qu'est ce qui ne marche pas?
Tu peux aussi faire :
Code:
1
2 double dval = combobox->Text->ToDouble();
C'est pas plutot comme ça qu'on recupérerait la valeur string/float
FloCode:StrToFloat (combobox->ItemIndex[numero_de_ligne]->Text)
Pour une ComboBox, text est le texte actuellement dans la zone de saisie.
oui mais est-ce
ouCode:StrToFloat(combobox->IntemIndex[nb_ligne]->Text);
?Code:StrToFloat(combobox->Text);
Flo.
Merci a tous pour vos reponses
Ce que je tente d'obtenir c'est :
Diametre->Text = StrToFloat (FloatToStr (Combobox->Text) * Pi);
Ca compile mais s'arrete avec :
projet Circonference.exe raised exception class econvert error message "38.1" is not a valid floating point value.
En un mot, la conversion de string vers float n'est pas correcte.
Je vais essayer les soluces que j'ai recues.
Salut.
Non, c'est pas ça. Le problème est que sur ton ordi, le séparateur des float doit être la virgule et non le point. J'ai eu un pb de portabilité à cause de ça. Donc il faut que dans ton combobox, tu aies 38,1 et non 38.1
ou bien tu peut definir le serapateur :Citation:
Donc il faut que dans ton combobox, tu aies 38,1 et non 38.1
DecimalSeparator = '.';
initialiser cette variable permet d'utiliser le programme sur un systeme US et Francais.Citation:
DecimalSeparator is the character used to separate the integer part from the fractional part of a number. The initial value is fetched from LOCALE_SDECIMAL.
autrement, tu peux aussi rechercher le '.' et le remplacer par une virgule avant de faire la conversion ce que ton utilisateur appréciera car il verra que ton logiciel a bien interprété ce qu'il voulait et l'a adapté à son fonctionnement. ça c'est de l'IHM ! :lol:
clovis >
je pense plutôt que c'est comme ca :Citation:
Diametre->Text = StrToFloat (FloatToStr (Combobox->Text) * Pi);
ne pas confondre FloatToStr et StrToFloatCode:Diametre->Text = FloatToStr ( StrToFloat(Combobox->Text) * Pi);
Ca c'est vraiment de la bidouille :lol:Citation:
autrement, tu peux aussi rechercher le '.' et le remplacer par une virgule avant de faire la conversion ce que ton utilisateur appréciera car il verra que ton logiciel a bien interprété ce qu'il voulait et l'a adapté à son fonctionnement. ça c'est de l'IHM
Je ne connaissais pas. Merci.Citation:
initialiser cette variable permet d'utiliser le programme sur un systeme US et Francais.Citation:
DecimalSeparator is the character used to separate the integer part from the fractional part of a number. The initial value is fetched from LOCALE_SDECIMAL.
C'etait bien cela. Une virgule au lieu d'un point. :D
Ce qui m'etonne est que mon systeme est entierement US et donc le point devrait indiquer les decimales ?!?
Il ne me reste plus qu'a trouver cette variable dans les settings et de la modifier.
Merci de votre aide
Moi, j'ai un système théoriquement français, et pourtant c'est un point. Chez des amis (à 1km de chez moi, dc en France), c'est une virgule, et pourtant, le système est français. Allez comprendre !
Salut,
Panneau de configuration, paramètres régionaux, onglet nombres, champ symbole décimal.
@+
Frédéric
Merci :D pour le parametre virgule/point
Est-il possible de controler la ponctuation utilisee par Windows pour les decimales
Salut
???
De quoi parles-tu ?
Il me semble que je viens de te répondre : windows contrôle la ponctuation des décimales via les paramètres régionaux.
@+
Citation:
ou bien tu peut definir le serapateur :
Code:DecimalSeparator = '.';
Citation:
DecimalSeparator is the character used to separate the integer part from the fractional part of a number. The initial value is fetched from LOCALE_SDECIMAL.
initialiser cette variable permet d'utiliser le programme sur un systeme US et Francais
Je me demandais s'il existait une fonction pour retrouver le setting du point/virgule pour les decimales, dans le registre de windows. Afin d'utiliser la ponctuation choisie par l'utilisateur.
Bon weekend
Salut,
Ici, tu récupères dans lplcdata le séparateur décimal choisi par l'utilisateur :
@+Code:
1
2 char lplcdata[1]; ::GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, lplcdata, 1);
Frédéric