bonjour je voudrais savoir comment je pourrai faire pour effectué un convertion d'un tableau AnsiString en double
Merci
bonjour je voudrais savoir comment je pourrai faire pour effectué un convertion d'un tableau AnsiString en double
Merci
Salut,
pour convertir un AnsiString en double tu peut utiliser la méthode ToDouble de la classe AnsiString, mais il faut que ton AnsiString contienne bien un chiffre et pas autre chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 AnsiString test; double testEnDouble; //Ok test = "2,56"; testEnDouble = test.ToDouble(); //Non Ok test = "2,59 mm" testEnDouble = test.ToDouble();
C'est un tableau AnsiString que je dispose et je doit mettre ce tableau en double .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int j; double xd[1000],yd[1000]; for(j=0;j<nbrligne;j++) { xd[j]=x[j].ToDouble(); }
je vien de faire ce que tu viens de me dire mais avec les tableaux sa ne fonctionne pas
Si tu as déclaré x de cette manière ca devrait fonctionner :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AnsiString x[1000];
c'est le cas tien je te montre le code avec la déclaration
Car mon but de cette conversion c'est de pouvoir rentrer les valeur du tableau dans la fonction de l'histogramme et pouvoir faire l'histogramme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 AnsiString x[1000],y[1000]; int j; double xd[1000],yd[1000]; for(j=0;j<nbrligne;j++) { xd[j]=x[j].ToDouble(); }
les valeurs en AnsiString je les est recuperées dans un fichier TXT
Cette conversion avec ce code ne fonctionne pas
Essaye plutôt de passer par une TStringList que par un vecteur d'AnsiString, a mon avis ça passera mieux.
Maintenant que j'ai fait toute ma lecture de fichier j'ai passé la journée dessus est sa marche niquel il y a pas d'autre solution
Si surement, mais la j'ai pas trop les moyen de tester de mon coté, donc ca attendra un peut a moins que quelqu'un d'autre puisse le faire avant.
Désolé
d'après des test j'ai pue voir qu'en faite il prend pas les valeurs ex 2.4 il ve 2,4 voila donc je doit lire mon fichier et remplacer le point en virgule
Oui effectivement, le ToDouble utilise la virgule et non le point
Salut !
Dans ce cas c'est assez simple.
Il suffit simplement de tester si la chaîne contient un '.' et si oui le modifier en ','
Par exemple :
On va supposer que chaque chaîne peut comporter soit un '.' soit un ',' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 TStringList Fichier = new TStringList; Fichier->LoadFromFile(...); AnsiString N; int p; double *Tabx = new double[Fichier->Count];
Dans la boucle :
Ne pas oublier qu'il faut, à un moment ou un autre, libérer la mémoire (donc ici, à ce stade, on ne sait pas quand) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 N = Fichier->Strings[j]; p = N.Pos("."); if(p!=0) N[p] = ','; // si '.' alors on le modifie en ',' Tabx[j] = N.ToDouble(); // double dans le tableau
Par contre, je ne vois pas l'utilité de passer par un fichier *.TXT (sauf pour faire écho au niveau littéral...) !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 delete [] Tabx; Fichier->Clear; delete Fichier;
Ne serait-il pas plus intéressant de travailller directement avec un *.BIN ?
Un tableau de double, ça se sauvegarde avec fwrite et ça se lit avec fread (le tableau entier) !
A plus !
Hello
En fait ToDouble utilise DecimalSeparator, qui par défaut dépend de la localisation du poste...
Donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 AnsiString chaine; double valeur; DecimalSeparator = '.'; chaine = "12.50"; valeur = chaine.ToDouble(); DecimalSeparator = ','; chaine = "12,50"; valeur = chaine.ToDouble();
Bonsoir,
Effectivement, la meilleur solution c'est d'utiliser une de ces propositions :
Le mieux serai de le faire au moment de la création de la fiche principale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DecimalSeparator = '.' ; // OU BIEN DecimalSeparator = ',' ;
De ma part, au moment du chargment/Lecture de ton fichier, tu convertis les données directement en double, ça evite de déclarer deux tableaux.
@+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager