Pb avec le séparateur décimal des paramètres régionaux
Utilisateur anonyme
-
5 janv. 2002 à 17:23
Mutos
Messages postés103Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention14 mai 2010
-
27 déc. 2005 à 10:56
Ayant crée un exe faisant aditions et soustraction et mettant dans un fichier mémoire le résultat.
Pourquoi lorsque j'installe le programme sur un autre PC ayant le séparateur décimal des paramètres régionaux différent du mien (Soit la , aulieu du . ) le programme au lancement m'affiche "Erreur dexécution 13, Type incompatible" .
Pourquoi, et y a t'il une solution pour palier à ce problème.
cs_ElFrances
Messages postés2Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention18 juin 2002 8 janv. 2002 à 15:30
Salut,
Je suppose que la réponse que l'on t'a fourni te convient, mais voici ma façon de faire. C'est une méthode de parresseux, mais elle fonctionne pas mal.
Le but est de connaitre le séparateur décimal. Pour ca, fait une petite gestion d'erreur sur CDbl() (fonction qui converti n'importe quel type numeric en un reel double). CDbl() prend en compte les parametres régionaux pour convertir. Alors si tu est dans une configuration avec séparateur 'point' il accepte à la fois le 'point' et la 'virgule' (du fait des standards microsoft). Par contre, et c'est la que c'est interressant, il declenche une erreur si tu est en mode separateur 'virgule' lorsque tu executes CDbl(1.1)... Tu reccuperres l'erreur et le tours est joué.
En bref et en code :
Private sub Toto()
on error goto AlorsVirgule
x = CDbl(1.1)
x = CDbl(1,1)
MsgBox "Le separateur est le point !"
exit sub
AlorsVirgule:
MsgBox "Le separateur est la virgule !"
End Sub
Voila, une fois que tu sais quel est ton séparateur, il te suffit d'utiliser Replace(...) pour remplacer le point ou la virgule suivant le cas échéant.
Esperant t'avoir apporté une réponse claire, n'hésite pas à me contacter : jb_el_frances@hotmail.com
Mutos
Messages postés103Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention14 mai 2010 27 déc. 2005 à 05:35
Bonjour à tous,
Après avoir vu plusieurs sujets sur ce problème, de 2002 (celui-ci) à 2004, il faut bien me résoudre à réaliser que personne n'a trouvé de solution. Je travaille sur VB.Net et je pensais à modifier la culture de l'application pour la rendre indépendante de celle de la machine, mais çà a l'air un peu plus sioux que ce que je croyais...
Mutos
Messages postés103Date d'inscriptionmercredi 30 avril 2003StatutMembreDernière intervention14 mai 2010 27 déc. 2005 à 10:56
Bonjour à tous,
Voilà la clé en VB.Net (en VB6 il y a peut-être une API mais je ne la connais pas), pour lui faire ignorer les paramètres régionaux :
Imports System.Globalization
Imports System.Threading
Thread.CurrentThread.CurrentCulture = New CultureInfo("en-us")
A faire en début de programme (Main ou Load de la première forme). Ici on lui force la culture américaine avec le "." et tous les autres paramètres, mais on peut aussi faire plus subtil en créant une variable CultureInfo et en la modifiant à loisir !