Главная страница
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.029 c
1-82300
AndyGee
2003-09-14 14:55
2003.09.25
CreateProcess и перенаправление стандартного ввода-вывода


1-82214
Senator
2003-09-11 14:47
2003.09.25
Отсоединение Attache файла из Outlook a


14-82498
Dimka Maslov
2003-09-05 17:08
2003.09.25
РЫКЛАМА


14-82444
vopros
2003-09-08 11:15
2003.09.25
Помогите с Application.messageBox


6-82361
aach_ua
2003-07-26 19:41
2003.09.25
Правильно обновлять прогу через инет