Главная страница
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.47 MB
Время: 0.017 c
14-82431
michael
2003-09-06 20:37
2003.09.25
Слыхал что ИБП сглаживает скачки напряжения.


14-82485
Igorek
2003-09-06 18:55
2003.09.25
Опрос: какой секс предпочитают программисты?


4-82561
_smile
2003-07-22 10:39
2003.09.25
Заполнение структуры LOGFONT


3-82093
Слава
2003-09-04 19:08
2003.09.25
ClientDataSet


3-82068
Бородин А
2003-09-02 14:46
2003.09.25
Получит данные из ячейки