DecimalSeparator/fr

From Lazarus wiki
Jump to navigationJump to search

English (en) français (fr)

DecimalSeparator (séparateur décimal) est une variable char globale dont le contenu est déterminé par la locale utilisée. Elle est utilisée pour la représentation des nombres flottants sous forme de chaîne de caractères dans les fonctions StrToFloat() et FloatToStr().

Aussi longtemps que toutes les instances d'un programme utilise le même séparateur décimal, tout se passera comme prévu. Toutefois, si l'une des instances du programme est basée sur la locale holllandaise (nl_NL) et écrit un fichier contenant des nombres flottants formatés et qu'une autre instance lit ces données avec une locale anglaise US (en_US), vous allez avoir un problème car un nombre formaté comme 123,456 va provoqué une exception de conversion... (la virgule n'est pas le séparateur décimal de cette locale.)

Un palliatif pouvant être utilisé :

function DecFloat2Str( const d: double ): string;
var
   myseparator: char;
begin
  myseparator := DecimalSeparator;
  DecimalSeparator := '.';
  Result := FloatToStr( d );
  DecimalSeparator := myseparator;
end;

DecimalSeparator est défini dans sysinth.inc comme:

 DecimalSeparator : Char absolute DefaultFormatSettings.DecimalSeparator deprecated;

NB : cette variable est marquée obsolète, il faut employer DefaultFormatSettings.DecimalSeparator à la place.

Voir aussi