Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

DBGrid, XML и DecimalSeparator   Найти похожие ветки 

 
Haba   (2003-09-03 17:28) [0]

Приветствую, коллеги.
Возникла тут проблема - никак не могу побороть.
Есть у меня сервер на юниксообразной машине, который обрабатывает клиентские запросы к БД и отсылает в обратку XML сформированый в формате TClientDataSet.XMLData.
Далее, я вывожу данные в DBGrid-e через ClientDataSet и всё бы нормально, до вот только с плавающей точкой какая то странность.
Если в установках клиента (Settings->Regional Settings) сепараотром установлена запятая, то всё ок. Если точка - то, соответственно, не работает.
Собственно, вопрос:
Как "научить" DBGrid съедать децемальные значения разделенные каким-то определенным знаком а не тем, что стоит в винде по умолчанию?


 
Nikolay M. ©   (2003-09-03 17:37) [1]

Ну дык а если с DecimalSeparator поиграться? Установить его на некоторое время в запятую?


 
Haba   (2003-09-03 17:44) [2]

Ой, сорри, совсем забыл написать, что я это пробовал (и в связке с Application.UpdateFormatSettings:=false; и без) и повлияло это только на отображение в гриде а не на восприятие данных датасетом. Хотя, если сменить ручками через Settings->Regional Settings - влияет и работает.


 
Тих   (2003-09-04 00:01) [3]

Тут целая наука, я ей наелся в свое время по горло с MSXML; какие принципы в MIDAS - не знаю, но могу дать пару кровавых советов. Когда на одной машине стоит английская Win c русской локалью, русский ворд 97 и английский Excel, и все это надо спаривать посредством XML - это очень сексуально.

Все аттрибуты в XML - это Variant`ы. В зависимости от региональных установок на машине fp-число может упаковываться в аттрибут или значение нода как с запятой, так и с точкой. Я наступал на грабли тогда, когда сервер с русской локалью паковал XML с запятой, а клиент с английской локалью пытался распаковать аттрибут нода во float, потому вываливался EConvertError и прочие прелести. Написал функцию, которая точки и запятые в аттрибуте заменяет на DecimalSeparator... глюки пропали..
Глобальный DecimalSeparator менять было нельзя, потому что Excel предоставлял fp-числа отчего-то с точкой, несмотря на русскую локаль, а MSXML с запятой...

Существует шанс, что какой-нить балбес в своих региональных настройках выставит разделителем чего-нить иное, и тогда ... :-)


 
Haba   (2003-09-04 11:33) [4]

Ага... А вообще возможно глобальный DecimalSeparator поменять?
Если просто менять переменную DecimalSeparator, то эффект проявляется только на отображении, как я уже ранее писал.
Парсить XML ещё раз очень не хочется. В принципе, можно конечно передавать серверу заранее DecimalSeparator, но это мне тоже не особо нравится :(



Страницы: 1 вся ветка

Текущий архив: 2003.09.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
3-82150
Юра
2003-09-03 16:06
2003.09.25
Как сделать запрос к двум базам?


14-82488
TNT
2003-09-03 23:49
2003.09.25
А собственно для чего нужен свой сайт?


3-82151
Рома
2003-09-03 16:39
2003.09.25
Подскажите как можно IB таблицв в DBF импортнуть?


3-82128
Layner
2003-09-04 13:06
2003.09.25
В FastReport (в любом) отражаю числовое поле из БД, как это поле


3-82091
Max_
2003-09-04 17:03
2003.09.25
TSQLClientDataSet и метод Execute???