Conversion chaine -> flottant sans se soucier des paramètre régionnaux

Contenu du snippet

Mon premier code sur codes-source

Qui n'a jamais eu de souci en voulant convertir une saisie utilisateur en flottant ?

Ce code permet de convertir une chaine en flottant sans se soucier du séparateur des paramètres régionnaux

En espérant que ca puisse être utile à quelqu'un

Source / Exemple :


(* ************************************************************************** *)
(*                         FUNCTION StrF_ToValue                              *)
(*                                                                            *)
(* Retourne une valeur réelle a partir d'une chaine avec . ou ,               *)
(* comme séparareur                                                           *)
(*                                                                            *)
(* ************************************************************************** *)
Function StrF_ToValue ( Const Chaine : String ) : double;
Var
  DecSeparator : Char;
  S            : String;
  I            : Integer;
Begin

  (* sauvegarde séparateur des options windows *)
  DecSeparator := DecimalSeparator;

  S := Chaine;

  Try

    (* Force le séparateur '.' *)
    DecimalSeparator := '.';

    (* Si on trouve le séparateur '.' *)
    IF Pos(DecimalSeparator, S) > 0 THEN
    Begin

      Try
        Result := StrToFloat (S);
      Except
        (* Si erreur de conversion *)
        Raise;
      End;

    End Else
    Begin
      (* Si on trouve le séparateur ',' *)
      I := Pos(',', S);

      (* On le remplace par '.' *)
      IF I > 0 THEN
        S[I] := DecimalSeparator;

      Try
        Result := StrToFloat (S);
      Except
        (* Si erreur de conversion *)
        Raise;
      End;

    End;

  Finally
    (* rétabli séparateur des options windows *)
    DecimalSeparator := DecSeparator;
  End;

End;

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.