2009-08-21 8 views
0

Je travaille sur une interface ASP classique héritée entre notre application client et le serveur. Ce n'est pas un site web, juste une couche intermédiaire dans ASP (je sais que ce n'est pas la manière préférée de faire les choses, je vous ai dit que c'est l'héritage et il ne peut malheureusement pas être changé pour le moment).Convertir de manière fiable une chaîne à un double indépendant des paramètres régionaux en ASP classique?

Je vous envoie une double valeur en tant que paramètre sur la chaîne de requête comme ceci:

http:\\localhost\virtdir\myobject.asp?f=function&1=5.25 

Maintenant en ASP, je prends cette valeur et la transmettre à une méthode sur un composant COM (myobject est une instance de ce composant COM) en utilisant CDbl pour lancer la valeur de chaîne à une double:

myobject.DoMethod(CDbl(Request.QueryString("1"))) 

(en fait, je ne pense pas que je dois utiliser CDbl ici, car cela transtypée implicitement parce que le COM méthode prend un double comme paramètre?)

Mon problème maintenant est que cela ne fonctionne pas si dans les paramètres régionaux du serveur un «,» est utilisé comme séparateur décimal. Dans ce cas, je dois passer "5,25" sur la chaîne de requête pour le faire fonctionner.
Étant donné que le client ne connaît pas les paramètres régionaux du serveur, existe-t-il un moyen fiable de s'assurer que la distribution vers CDbl fonctionnera toujours avec le même séparateur décimal, quels que soient les paramètres régionaux? Ou y a-t-il une autre fonction comme CDbl qui fait cela? Merci!

Répondre

2

vous pourriez forcer la « culture actuelle » à l'aide de cette avant d'appeler CDbl

SetLocale(1033) 
Session.LCID = 1033 
+0

par la façon dont vous pouvez définir 1033 à quelque chose d'autre jsut chercher sur Google pour obtenir un tableau (très facile à obtenir) –

+0

de Nice! C'est ce dont j'avais besoin. Seulement 'SetLocale (1033)' était suffisant cependant. Pas besoin de définir 'Session.LCID' aussi, ou cela serait-il nécessaire dans un autre scénario obscur dont je ne suis pas au courant? – fretje

+0

Nope c'est effectivement la même chose :) –

Questions connexes