Главная страница
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.022 c
1-82230
Fantom_
2003-09-11 12:22
2003.09.25
Delphi ломает русские символы в Windows 2000


14-82455
Кен
2003-09-05 01:53
2003.09.25
В Белоруссии разработали сверхбыстрый модем


1-82273
ЮРИЙ_К
2003-09-12 13:34
2003.09.25
Математический алгоритм... или ???


1-82332
hepry
2003-09-13 13:43
2003.09.25
Checkbox без реакции на нажатие <пробел>


3-82035
bytebutcher
2003-09-03 12:17
2003.09.25
Помогите понять