Надежно преобразовать строку в двойную независимую от региональных настроек в классическом ASP? - PullRequest
0 голосов
/ 21 августа 2009

Я работаю над устаревшим классическим интерфейсом ASP между нашим клиентским приложением и сервером. Это не веб-сайт, а промежуточный уровень в ASP (я знаю, что это не самый предпочтительный способ ведения дел, я сказал вам, что это наследие, и его, к сожалению, нельзя изменить на данном этапе).

Итак, я отправляю двойное значение в качестве параметра в строке запроса следующим образом:

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

Теперь в ASP я беру это значение и передаю его методу в COM-компоненте (myobject является экземпляром этого COM-компонента), используя CDbl для преобразования строкового значения в double:

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

(На самом деле, я не думаю, что здесь нужно использовать CDbl, так как он будет приведен неявно, потому что метод COM принимает в качестве параметра значение типа double?)

Моя проблема сейчас в том, что это не работает, если в региональных настройках сервера в качестве десятичного разделителя используется символ ','. В этом случае я должен передать «5,25» в строке запроса, чтобы он работал.
Поскольку клиент не знает о региональных настройках сервера, существует ли надежный способ убедиться, что приведение к CDbl всегда будет работать с одним и тем же десятичным разделителем, независимо от региональных настроек? Или есть другая функция, как CDbl, которая делает это? Спасибо!

1 Ответ

2 голосов
/ 21 августа 2009

вы могли бы принудительно использовать "текущую культуру" перед вызовом cdbl

SetLocale(1033) 
Session.LCID = 1033
...