sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008
-
20 févr. 2007 à 09:50
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008
-
20 févr. 2007 à 10:30
Bonjour à toutes et à tous,
Je vous présente mon projet rapidement : j'utilise un http://msdn.microsoft.com/library/FRE/cpref/html/frlrfsystemxmlxmltextwriterclasstopic.asp&&DI=' target='_blank'>6024&IG=831c2e389d3145c88ab26a7bc1139392&POS=1&CM=WPU&CE=1&CS=AWP&SR=1 XmlTextWriter pour générer un fichier RDL (Report Definition Language) dans lequel je dois utiliser les éléments <Top>...</Top>, <Left>...</Left> etc..... Dans ces balises, il est nécessaire de mettre des valeurs décimales, or, les décimales doivent avoir un separator de type "." (point) et non "," (virgule). J'ai besoin de passer par un type numérique (Double, Decimal à la rigueur si vous me le conseillez...) car à chaque tour de boucle dans laquelle un nouvel objet XML contenant ces balises est généré, je dois augmenter ces valeurs...
Le problème maintenant : bien il est simple, mais je n'arrive pas à le solver :( En passant un double, je me retrouve avec un nombre à virgule dans le XML....Je me suis donc dit "ok, je vais faire une fonction rapide qui convertit mon Double en String, et il sera forcé de prendre le point comme séparator !" (à noter que la fonction chargée de la génération de la balise prend en paramètre des String). Ma question est donc, comment me débrouiller pour qu'il prenne réellement en compte un . et non une , ?
Voici un petit exemple du code pour éclaircir un peu :
private string doubleFrToUk(double input)
{
string result = Double.Parse(input.ToString(), System.Globalization.NumberStyles.Float).ToString();
return result;
} // doubleFrToUk()
2eme version
private string doubleFrToUk(double input)
{
string result = input.ToString();
if (result.Contains(","))
{
result.Replace(",", ".");
}
return result;
} // doubleFrToUk()
Voilà, je suis assez
embêté par ce détail...je vais regarder si on ne peut pas configurer
quelque chose dans VS (je suis sous Visual Studio 2005 au passage, .NET
2.0) pour le Locale de la génération quelque chose comme ça car je
bloque depuis hier.... :(
Merci à vous !
"Un seul Être vous manque, et tout est dépeuplé..."
sphaxslayer
Messages postés216Date d'inscriptionmardi 5 avril 2005StatutMembreDernière intervention17 septembre 2008 20 févr. 2007 à 10:12
Salut Sébastien,
merci pour ta réponse, mais comment lui préciser ça ? enfin, est-ce dans le code ou dans la conf de VS...? Autrement puisque tu es consultant C# je suppose que tu es suffisamment calé pour me diriger sinon ça ne fait rien : j'ai trouvé la classe XmlConvert et plus particulièrement sa méthode ToString(double d) qui convertit un double en string...Je suppose cette méthode plus propre que de toucher la conf de VS, qu'en penses-tu ? en revanche, s'il s'agit de configurer mon writer ou mon flux (qui est en UTF-8 au passage) lequel des deux procédés seraient le plus adapté et surtout le plus "clean" ?
Merci de ta réponse !
"Un seul Être vous manque, et tout est dépeuplé..."
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 20 févr. 2007 à 10:03
il faut que tu précises lors de l'export que tu veux utiliser en-US comme localisation. Sinon, par défaut, il prend la locale de la machine... donc fr-FR.
Je valide donc nos 2 réponses car dans mon cas, le XmlConvert me convient mieux (notamment pour les calculs à la volée à effectuer sur le double, ça alourdit moins le code) mais ta méthode était ce que je cherchais en réalité au départ.... Merci encore !
Vincent
"Un seul Être vous manque, et tout est dépeuplé..."