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
Je n'ai pas prévu de tester si la chaine comporterait 2 fois des . ou , ou même si un caractère serait présent, puisque je fais attention à ce que j'envoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Function StrToCurrSys(chaine:String): Currency; Var Diviseur: Extended; // Forcement multiple de 10 begin Result :=0; Diviseur :=1; if Pos('.',chaine) <> 0 then Diviseur := Power(10,(Length(Chaine) - Pos('.',Chaine))) else if Pos(',',chaine) <> 0 then Diviseur := Power(10,(Length(Chaine) - Pos(',',Chaine))); // on tranforme chaine en entier enfin on pourrai dire... Chaine := StringReplace(Chaine,' ','',[rfReplaceAll]); // on retire d'éventuels espaces Chaine := StringReplace(Chaine,'.','',[]); // on retire l'éventuel point Chaine := StringReplace(Chaine,',','',[]); // on retire l'éventuel virgule // on retourne la valeur avec le signe décimal du poste sans changer les paramètres systèmes Result := StrToInt64(Chaine) / Diviseur; end;
Si une fonction delphi similaire existe n'hésite pas à me le dire...
Bye.
Partager