codial
Messages postés265Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention 5 mai 2015
-
17 mai 2005 à 18:20
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 2021
-
18 mai 2005 à 19:03
Bonsoir tout le monde,
J'importe des données dans une table paradox à partir d'un fichier texte et j'ai un problème avec ce code:
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 18 mai 2005 à 12:23
Salut Japee.
Cette ligne : if not (S[i] = ' ') then se traduit en :
if S[i] <> '' then
"not equal" est équivalent de "different of"
Si Codial veut traiter plusieurs caractères, alors la formule suivante est plus adaptée :
//traitement des caractères espace et virgule
if not (S[i] in [' ', ',']) then...
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
Cependant j'ai testé la fonction de jappee et c'est bon je peux remplir ma table.
En fait c'est juste le traitement des espaces qui posait problème.
Je vous remercie pour vos réponses qui m'ont bien dépannées
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 18 mai 2005 à 17:21
Si vous aimez l'assembleur, il est amusant de regarder le déroulement de la fonction
StrToCurr
il y est fait appel à la procédure TextToFloat
X := StrToFloat(wEuros) est alors traduit en TextToFloat(PChar(wEuros),X,fvCurrency)
La fonction
TextToFloat
convertit sans erreur les chaines avec autant d'espace avant et après
la représentation numérique, mais s'il y en a un (espace) entre le
chiffres, après le signe, avant ou après le point, la conversion est
interrompue est une erreur est revoyée.
' +13.46' est bon
'+13.46 ' est bon
' +13.46 ' est bon
C'est bon à savoir ! Pas besoin de faire le ménage avant !
Tout autre espace inséré provoque une erreur. Même si on a pris la précaution de mettre ThousandSeparator :=' '; Je parlerai pour ma part de bug (et je sais de quoi je parle, je suis un gros producteur !
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 18 mai 2005 à 18:33
salut,
apparemment le seul séparateur des milliers admis en Delphi est le
point '.' : voir l'aide à la rubrique FormatFloat,fonction;
attention également on peut avoir la même erreur en récupérant des
données au format US ou la virgule est remplacée par le point décimal
d'autre part dans ce format le séparateur des milliers est la virgule
',' ce qui dans le cas de conversion d'une valeur entiére '40,000'
donnerais 40 pour résultat;
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 18 mai 2005 à 19:03
Le sujet est décidément intéressant et très ouvert
Les programmeurs Delphi dans le secteur bancaire, et plus
particulièrement concernant le marché des changes, doivent s'arracher
quelques cheveux, non ?
Tiens, j'ai trouvé une approche un peu plus concise que celle que je proposais plus haut :
function MyStrToCurr(S: String): Currency;
begin
Result := StrToCurr(StringReplace(S, ' ', EmptyStr, [rfReplaceAll]));