yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017
-
15 févr. 2006 à 10:27
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
16 févr. 2006 à 04:30
Lors de la vonvertion d'une chaine en flotan il arrive d'avoir l'erreur de convertion car le séparateur décimal n'est pas celmui du système.
Au lieu d'utiliser strtofloat(s) quelle instruction simple utuliser pour que cela focntionne aussi bien avec comme séparateur décimal le point "." ou la virgule "," ?
Sans changer la configuration système afin que cela fonctionne sur un grand nombre de PC
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 15 févr. 2006 à 11:49
salut,
une fonction qui accepte les 2 format je ne connais pas mais tu peux
soit tester la presence de l'un ou l'autre des séparateur decimaux;
soit utiliser la fonction stringreplace pour mettre le séparateur en
conformité avec le systeme soit enfin gérer les erreurs de conversion
poru mio je pense qu'il est plus simple de remplacer le séparateur decimal avec la fonction stringreplace:
flor003
Messages postés118Date d'inscriptiondimanche 28 septembre 2003StatutMembreDernière intervention19 juin 2007 15 févr. 2006 à 14:23
salut jlen100!
Complètement d'accord avec ta méthode.
Mais je m'excuse de ne pas être allé au bout de mon explication.
Et comme je suis quelqu'un de très compliqué je propose ma solution (qui n'est pas la meilleure on est d'accord, j'ai pas essayé j'ai honte si ça se trouve marche pas):
if decimalseparator=',' then
StrToFloat(chaine,'.')
else
StrToFloat(chaine,'.');
ps: ne pas hésiter à me le dire si j'ai dis une connerie
a++
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 15 févr. 2006 à 14:41
flor003 comme je te l'ai dit le fait de forcer le séparateur décimal ne
supprimera les erreurs de convertion. je m'explique si tu veux
convertir la chaine:= '123 . 25' et que le séparteur décimal est à ',' tu auras une erreur Eerrorconvert de même si tu as 123,25' et que le séparteur décimal est à '.' il faut qu'il y ait adéquation entre la chaine et le séparateur décimal la seule façon à ma connaissance est de forcer la chaine au séparateur décimal.
en fait quand tu ecis:
if decimalseparator =',' then
StrToFloat(chaine,'.')
else
StrToFloat(chaine,'.');
cela revient à écrire : StrToFloat(chaine,DecimalSeparator)
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 15 févr. 2006 à 15:34
pas de quoi il peut toutefois rester un problème: Si la chaine a été
formatée avec des séparateurs de millier qui sont l'inverse des
séparateur decimaux---> un bon casse tete!