begin process at 2008 08 29 00:38:27
1 233 467 membres
10 nouveaux aujourd'hui
14 291 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : séparateur de décimal [ Système / Autre ] (babe59)

séparateur de décimal le 03/07/2007 13:50:36

babe59
Bonjour,

Je dois faire une appli qui tourne sur des postes ayant le séparateur de décimal à '.' ou à ','. J'aimerai donc modifier la méthode ToString afn qu'elle remplace le point ou la virgule en fonction du séparateur défini dans les options régionnales. Pourriez vous m'aider pour modifier cette méthode pour un dataRow par exemple (la récup du séparateur et le replace ne me pose pas de soucis, c'est plutot la réécriture du ToString).

Exemple :
double epais = double.Parse(dr["EPAIS"].ToString());


Merci

DT

Re : séparateur de décimal le 03/07/2007 14:22:16

Bidou
(Admin CS)
Salut,
Tu peux récupérer le separator courant comme ceci:

System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator





-Blog-

Re : séparateur de décimal le 03/07/2007 16:00:27

babe59
j'ai du mal m'exprimer... Pas de soucis pour le séparator...

c'est plus l'override de la méthode TosString qui me pose problème.

Pour reprendre mon exemple: double epais = double.Parse(dr["EPAIS"].ToString());
si EPAIS = "12,2" dans une colonne d'une base SQL, j'aimerai que la méthode ToString de ma DataRow me retourne "12.2"

DT

Re : séparateur de décimal le 03/07/2007 16:26:20

djamelbarache
tu peux essayer ça !!!!!
double epais = double.Parse(dr["EPAIS"].ToString().Replace(',','.'));

Re : séparateur de décimal le 03/07/2007 16:27:07

Bidou
(Admin CS)
Tu peux passer un IFormatProvider à ToString.
Tu peux donc lui spécifier une culture différente pour qu'il formate les données selon cette culture. Par exemple:

string x = myDoubleToString(new System.Globalization.CultureInfo("fr-CH"));


-Blog-

Re : séparateur de décimal le 03/07/2007 16:42:16

babe59
 djamelbarache : je n'ai pas envie de rajouter le replace à mon tostring, je préférerez  que ca soit le toString qui fasse le travail

Bidou : OK, mais dans mon cas, la virgule ne dépend pas de la culture mais d'un choix d'utilisateur dans les options régionnales. En fait elle peut changer d'un PC à l'autre pour la même culture.


Voici la méthode toString de mon DataRow que j'aimerai implémenter (c'est juste une idée, je ne sais pas l'intégrer à mon code)

publicoverridestring ToString()
{
string goodSeparator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator
string badSeparator = goodSeparator == "." ? "," : "."
returnbase.ToString().Replace(badSeparator, goodSeparator);
}qq chose dans ce gout là !

DT

Re : séparateur de décimal le 03/07/2007 16:50:18

babe59
je pose la question différemment :

puis je ajouter une méthode _ToString à un objet existant tel qu'un DataRow

--------
DataRow dr = null;
...
string str = dr["TOTO"]._ToString();
---------

DT

Re : séparateur de décimal le 03/07/2007 17:07:24

Bidou
(Admin CS)
dr[x] retourne un object.
Donc le ToString se fera sur l'object et pas le dataRow.

Tu peux faire un override en dérivant la class sur laquelle tu veux modifier le ToString. Possible seulement pour les objects non-sealed donc.



-Blog-

Re : séparateur de décimal le 03/07/2007 17:39:32

babe59

Ok pour le type de retour du DataRow,
Ok pour l'override de la classe "object" (si j'ai bien compris) mais comment l'implémenter dans mon source ... ?
la classe object est elle "non-sealed" ?

Et pour ma dernière question (ajout d'un nouvelle méthode à la classe DataRow) As tu une idée (c'est pour moi un autre moyen de régler mon problème)

DT

Re : séparateur de décimal le 03/07/2007 18:03:01

Bidou
(Admin CS)
Tu vas être embêté avec le DataRow parce que son constructeur est protected internal.
Tu peux donc pas l'instancié directement... (éven. par reflexion, mais c'est pas pour autant que tu pourras dérivé la classe).

Pour le type object, oui tu peux le dérivé, mais c'est pas si simple.
Parce que même si dr[x] return un object, c'est la méthode du type de base qui sera appelé (late binding inside).





-Blog-


[Page 1 Page 2 Page 3]
Classé sous : modifier, méthode, décimal, séparateur, tostring

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS