Bonsoir,
je reviens sur mon problème étrange concernant la "réaction" de la fonction StrToFloat sous lazarus 1.2.4 en 64 bit sous fedora 20.
J'utilise des tables sqlite3 où les champs de données sont des chaînes de caractères même pour les valeurs dates ou numériques avec décimales ou pas. J'utilise les composants natifs de lazarus.
J'utilise la fonction StrToFloat pour convertir les valeurs lues dans mes tables quand je sais que la chaîne enregistrée comporte des décimales et je mets le résultat dans une variable déclarée comme Double pour pouvoir utiliser le résultat afin d'effectuer des calculs. Ensuite j'effectue l'opération inverse FloatToStr sur ce nouveau résultat qu je mets en forme pour avoir dans mon enregistrement une chaîne de x caractères avec le nombre de décimales voulues.
Exemple : Champ TOTAL est prévu pour 6 caractères une virgule et 2 caractères pour la valeur décimale si ma valeur calculée me donne 123.4 avec un point la conversion me donne 123,4 avec une virgule j'ajoute 3 espaces en début de chaîne puis un zéro en fin de chaîne.
Maintenant voila mon problème dans une de mes applications utilisant cette façon de faire je suis obligé d'ajouter une fonction Trim comme ceci
sinon j'ai un message d'erreur de conversion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ML_PREMIER:=data.Vehicule.FieldByName('L_PREMIER').AsString; XL_PREMIER:=StrToFloat(Trim(ML_PREMIER));
J'ai fait de nombreux essais avec une application de test en il effectuant les mêmes opérations avec la même base et je n'ai pas ce problème.
J'ai dans l'application concernée ajouter une unité pour effectuer le me essai et là j'ai a nouveau l'erreur de conversion.
J'ai refait un autre essai en recréant le projet et en y ajoutant les unités d'origine même problème.
J'ai tenté la fonction de l'EDI nettoyer les fichiers de compilation pas de changement j'ai pensé peut-être à tords que le problème venait du fichier des ressources *.lrs, j'ai renommé ce fichier pour obliger sa recréation qui n'a pas eu lieu et le résulta est le même avec juste une particularité un nouveau fichier *.lfm se trouve dans le dossier lib/x86_64-linux.
Ce problème semble lié à cette application car j'utilise la même utilisation dans d'autres sans problème.
Alors où chercher pour corriger cette anomalie ou devrais-je la réécrire entièrement.
L'un d'entre vous aurait-il une idée dans mes recherches.
Merci d'avance
Partager