|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Dev/For/Vte/Ass Inscription : août 2008 Messages : 1 499 ![]() |
Salut,
Je n'ai pas retrouvé de fonction sous delphi permettant de tranformer un String en Currency. (enfin je parle pas de StrToCurr() ou autre...) mais une fonction qui garantie quelque soit la valeur signe décimal du système . ou , C'est vrai on pourrait changer cet attribut système, mais le texte peut toujours être différent. Récemment dans un projet j'avais un fichier texte avec des lignes à reprendre pour alimenter une base, le taux de TVA écrit ainsi 19.6 et quelques lignes plus loin 19,6 et je vous raconte pas les chiffres, et je vous garantie que StrToCurr() ou autre fonction ne change pas le problème. Tout le monde à ça petite procédure je n'en doute pas, je propose la mienne : Unit Math nécessaire Code :
Si une fonction delphi similaire existe n'hésite pas à me le dire... Bye. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() |
Bonjour,
En effet certaines valeurs comme les suivantes seront mal gérées : 1.000.000,00 1,000,000.00 1° remarque : prévoir la fonction StrToCurrSysDef qui renvoie une valeur par défaut. 2° remarque : passer par des règles de "parser" pour traiter ces valeurs... et savoir qu'est ce que l'on considère comme consistant dans les chaines lues. Après, pour des cas où les valeurs possibles sont limitées, cela peut être utile. 3° remarque : faire les contrôles plus en amont et plus étroitement, lors de la saisie (si c'est possible)...
__________________
Philippe. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Dev/For/Vte/Ass Inscription : août 2008 Messages : 1 499 ![]() |
Salut,
La remarque 3 est impossible, il n'y a pas saisie de l'utilisateur dans mon cas, c'est le traitement de lignes d'un fichier texte. Le parser, effectivement ce serait plus professionnel. StrtoCurrSysDef, en fait lorsque je l'ai fait j'y ai pensé. Merci à toi. Si j'ai le temps je ferai tes 2 remarques et je traiterai les cas de séparateur de milliers PS : je suis aussi tombé sur celui-ci aujourd'hui ICI l'inconvénient c'est qu'il peut retourner du texte et ne gère pas non plus tes 2 exemples (enfin si, en retournant du texte). |
|
|
00
|
|
|
#4 | |
![]() ![]() Serge GirardDéveloppeur informatique Inscription : janvier 2007 Messages : 4 217 ![]() |
une solution , peut être ,chercher non pas la position du premier point ou virgule décimal au mais la dernière !
cependant restera le cas où il n'y a pas de décimale mais seulement des séparateurs de milliers Citation:
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Dev/For/Vte/Ass Inscription : août 2008 Messages : 1 499 ![]() |
Oui, j'avais pensé en fait de :
1- supprimer tous les espaces 2- partir à l'envers du string reçu et détecter ou non . ou , Maintenant le cas de ton petit chat , franchement depuis le temps ou je découpe des fichiers textes (compta, gestion) dans tous les sens je n'ai jamais eu de cas ou le séparateur de miliers était autre chose que rien ou espace, peut-être le fait que mes traitements concernent esclusivement des fichiers français donc dans mon cas pour moi c'est 20 (virgule) 000 et non 20000.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com