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 : 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;
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.

Si une fonction delphi similaire existe n'hésite pas à me le dire...

Bye.