zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016
-
15 févr. 2008 à 16:09
zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016
-
18 févr. 2008 à 17:08
Bonjour à tous,
Je souhaite récupérer depuis un fichier *.ini le format qui va être appliqué pour afficher les flottants, grâce à la fonction FormatFloat:
function FormatFloat(const Format: string; Value: Extended): string;
Lors de la lecture de ce paramètre, par la fonction ReadString:
function ReadString(const Section, Ident, Default: String): String; override;
je voudrais vérifier que cette chaîne est bien conforme pour être passée en argument de la fonction FormatFloat. J'ai commencé à écrire une procédure affreuse avec des if sur tous les caractères de la chaîne, mais c'est illisible. N'y aurait-il pas une méthode plus élégante et surtout plus efficace pour vérifier le format de cette chaîne ?
Appelez ReadFloat pour lire une valeur flottante dans un fichier INI.Section identifie la section qui contient la clévoulue.Ident spécifie le nom de la clécontenant la valeur flottante àlire.Default est la valeur flottante àrenvoyer si :
la section n'existe pas ;
la clén'existe pas ;
la valeur de données n'a pas été affectée pour la clé.
en gros :
Flt := Ini.ReadFloat('MaSection', 'MonFlottant', ValeurParDefaut);
if Flt = ValeurParDefaut then
{ gestion du probleme probleme ... }
else
S := FormatFloat('%.0n', Flt);
zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016 15 févr. 2008 à 17:05
C'est une idée. Mais je voudrais couvrir le cas où le format spécifié est du genre:
#,##0.00;(#,##0.00)
Même si, là, j'avoue qu'il faudrait être maso pour marquer cette valeur dans le fichier *.ini.
Par hasard, n'y aurait-il pas moyen de faire un teste en utilisant les expressions régulières ?
zwyx
Messages postés146Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention21 mars 2016 18 févr. 2008 à 17:08
Effectivement f0xi, j'ai finalement pensé à cette solution qui semble la meilleure, à savoir, essayer une conversion, au lieu de vérifier la validité du format. Si la conversion n'a pas déclenché d'exception, c'est que le format est correct. Ca paraît tellement évident une fois qu'on a la solution.
En plus, je vais directement recopier tes quelques lignes qui règlent le problème du séparateur décimal (point ou virgule).