Bonjour,
Je suis devant un problème, qui pourrait vous sembler facile à résoudre mais je
ne suis qu'un débutant
J'ai un souci de conversion, je m'explique : Je dois afficher une valeur dans un
stringgrid en prenant en compte un paramètre de représentation (0,001 par exemple).
Je reçois des données par le réseau CAN, que je récupère dans la
variable "factor" de type double. Je dois multiplier par un coefficient
défini de façon arbitraire de type float et je dois afficher la valeur avec
la résolution demandée.
La ligne valFin := SimpleRoundTo(StrToFloat(factor),-nbDec); me pose
une erreur car elle contient un point et non une virgule.
Pouvez-vous me dire comment convertir un string de decimal avec virgule
en decimal avec point svp ? Merci
Pour l'instant, j'utilise une routine qui parcourt la variable valFin en remplaçant
la virgule par le point de façon "artificielle".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Begin coeff := 1,56; FormAffichage := 0,005; // Détection de la position de la virgule : nbDec->Nb de chiffres après virgule for cptPosVirg:=0 to length(FormAffichage) Do Begin if FormAffichage[cptPosVirg]=',' then posvirgl:=cptPosVirg; nbDec := length(FormAffichage)-posvirgl; End; factor := FloatToStr(longint((@donnee[5])^)*coeff); // On récupère l'info sur le CAN et on multiplie par le coeff // Formatage de la valeur à afficher (on remplace la "," par le ".") for ab:=0 to length(factor) Do Begin if factor[ab]=',' then factor[ab]:='.'; End; valFin := SimpleRoundTo(StrToFloat(factor),-nbDec); // On arrondit la valeur à afficher en respectant le format demandé End Else Begin if(donnee[4]=0) then StringGrid1.Cells[3,n]:=FloatToStr(valFinale)+' '+PParameterReceived^.Unite; End;
Partager