Chaine de carractère Virgule en point et inversement

cs_Rowan Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 16 septembre 2004 - 5 mai 2004 à 11:38
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 6 mai 2004 à 18:30
Bonjour à tous et à toutes,

J'aimerai savoir si j'extrais une chaine de carractère de type String. Ex Toto : String.
Que cette chaine est initialisée par la valeur :
Toto : ='1,569';
Je voudrai que cette chaine devienne 1.569
La valeur de Toto serait égale à 1.569
DecimalSeparator ne suffit à lui seul à résoudre mon problème.

Et inversement J'ai la valeur 1.569 que je veux transformer en 1,569

Si quelqu'un a une solution à m'apporter, j'en serai très ravis car je galère dans l'application que je développe en ce moment.

Merci d'avance à tous pour la solution.

ROWAN : microcom@netcourrier.com

3 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 mai 2004 à 12:36
Voir le code ci-dessous :
procedure CheckDecSeparator(var Toto: string);
var
  CarPos: integer;
begin
  if DecimalSeparator = '.' then
  begin
    //Rechercher une virgule
    CarPos := Pos( ',', Toto);
    if CarPos <> 0 then
      Toto[CarPos] := DecimalSeparator;
  end
  else
  if DecimalSeparator = ',' then
  begin
    //Rechercher un point
    CarPos := Pos('.', Toto);
    if CarPos <> 0 then
      Toto[CarPos] := DecimalSeparator;
  end;
end;

Exemple d'utilisation :
procedure TForm1.Button1Click(Sender: TObject);
var
  Toto: string;
begin
  Toto := '1,569';
  CheckDecSeparator(Toto);
  ShowMessage(Toto);
end;

May Delphi be with you
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
6 mai 2004 à 17:04
C'est bien ce que je pensais, Rowan.

Tu veux convertir un String en Real, rien d'autre, puisque tu veux que :
'1,569' (String)
te donne cette valeur :
1.569 (Real)

Jette donc un coup d'oeil à ma réponse à ton message "Transformer un nombre décimal et l'arrondir à 2 chiffres après la virgule".

N'hésite pas à consulter l'aide en ligne de Delphi aux rubriques :
"StrToFloat" et "FloatToStr".
Tu seras édifié !

Bonne prog' :-p
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
6 mai 2004 à 18:30
En l'occurence, il s'agissait de remplacer la virgule par un point (ou l'inverse, selon le cas). Mais, en aucun cas, de transformer une chaine en un réel.

Ou alors, j'ai mal lu la question... ;)
May Delphi be with you
0
Rejoignez-nous