cs_saravana
Messages postés91Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention18 octobre 2007 16 févr. 2006 à 12:44
tu peux faire par exemple avec deux edit et un button, dans le onclick du button ajoute ca:
procedure TForm1.button1click(Sender: TObject);
Var St:string;
i:integer;
begin
St:=edit1.Text;
for i:=1 to Length(St) do
if St[i]='.' then St[i]:=',';
edit2.Text:=st;
end;
si tu tapes 0.5 dans le premier edit , lorsque tu appuies sur le bouton le deuxieme edit affichera 0,5.
++
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 16 févr. 2006 à 19:06
Et si l'utilisateur entre un nombre avec virgule sur un ordinateur configuré pour accepter des points comme séparateurs décimaux ? Ca pose un problème ! (hé oui, il faut bien voir tous les cas de figure!), donc je proposerais :
chaine:=stringreplace(chaine,'.',decimalseparator,[rfReplaceAll]); // Une fois le point
chaine:=stringreplace(chaine,',',decimalseparator,[rfReplaceAll]); // Une fois la virgule
Comme ça, on s'adapte vraiment à l'ordinateur !
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 16 févr. 2006 à 19:46
Bien sûr que l'on t'excuse !
Je ne pense pas que le test du caractère décimal en vigueur soit nécessaire, car l'action d'une procédure n'engendre pas de modification sur l'autre...
Après, s'il s'agit de gagner 1ms sur la procédure StringReplace non exécutée (car écartée par le test), c'est un autre problème, mais généralement les nombres traités n'ont pas une infinité de chiffres, et la rapidité de traitement de ces procédures est vraiment minime... Donc le temps de traitement est quasi-identique