Pb avec EConvert

Résolu
cs_freax Messages postés 32 Date d'inscription vendredi 29 novembre 2002 Statut Membre Dernière intervention 27 avril 2005 - 26 oct. 2004 à 18:57
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 - 26 oct. 2004 à 22:35
Voila j'ai ceci :

Met donnée continne sa :

result := '35';
montant[i+1] := '0';
montant[i+1] := '0';

dans une function j'ai ceci :

result := result + Chr(46) + montant[i+1] + montant[i+2];
result := IntToStr(Round(StrToInt(result)));

sa ne marche pas, et me declanche une erreur EConvertError..
vous avez une iddée ?

2 réponses

wedebe Messages postés 6 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 21 novembre 2004
26 oct. 2004 à 21:53
Bonjour,

A priori, Chr(46) est l'équivalent de '.'.
result contient donc après la première instruction '35.00'.

'35.00' n'est pas une valeur entière (correcte), et la fonction StrToInt cherche à convertir du texte en un entier... ce qui n'est évidemment pas possible et déclenche donc une execption EConvertError (erreur de conversion de donnée).
3
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
26 oct. 2004 à 22:35
Salut freax,

wedebe a tout à fait raison, si tu cherches à Convertir une chaine de caractère en Real il faut utiliser la function StrToFloat StrToInt converti une chaine de caractère en Entier.

Afin de ne pas recontrer d'autre EConvertError avec la function StrToFloat, je te conseil d'utiliser le caractère décimale de Delphi, que tu peux initialiser ta guise.

result := result + DecimalSeparator + montant[i+1] + montant[i+2];
result := IntToStr(Round(StrToFloat(result)));


Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
3
Rejoignez-nous