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

Вниз

разделитель дробной части   Найти похожие ветки 

 
zorik ©   (2008-05-20 17:56) [0]

Как узнать разделитель дробной части в Win95, 2000, XP
DecimalSeparator всегда возвращает точку


 
Юрий Зотов ©   (2008-05-20 18:00) [1]

Значит, в региональных настройках системы точка и установлена. Это от версии системы не зависит.


 
Reindeer Moss Eater ©   (2008-05-20 18:07) [2]

DecimalSeparator может возвращать точку, в то время как в системе текущий сеанс имеет разделителем запятую.
или наоборот.


 
zorik ©   (2008-05-20 18:08) [3]

В региональных установках точно зяпятая.
Дело в том, что я делаю экспорт в ексель. Форматирую число свойством Range.NumberFormat := "0.000" -- записал и посмотрел в макросе.
Так вот если в системе стоит точка. то все нормально, а если запятая, то непонятно как он себя ведет. Макрос показывает что надо Range.NumberFormat := "0.000". При таком раскладе первая область нормально заполняется, а остальные надо Range.NumberFormat := "0,000", т.е. через зяпятую.
Пока выкрутился так:

ANumber1 := "0.000";
ANumber2 := "0,000";
for i := 0 to Count - 1 do
 try
   Range[i].NumberFormat := ANumber1;
 except
   try
     Range[i].NumberFormat := ANumber2;
   except
     on E:Exception do
       raise Exception.Create(E.Message);
   end;
 end;

У меня офис 2007, на 2003 такая же ситуация


 
zorik ©   (2008-05-20 18:10) [4]

но это не дело так оставлять ((


 
Юрий Зотов ©   (2008-05-20 19:02) [5]

> Reindeer Moss Eater ©   (20.05.08 18:07) [2]

Хм... для меня это новость, чес-слово. А можно подробнее?


 
Юрий Зотов ©   (2008-05-20 19:03) [6]

> zorik

Office русский?


 
Reindeer Moss Eater ©   (2008-05-20 19:06) [7]

Это же просто паблик переменная, которую можно изменить и сделать так, что бы изменения региональных настрокек системы во время работы приложения не меняли её значение.


 
Юрий Зотов ©   (2008-05-20 19:10) [8]

> Reindeer Moss Eater ©   (20.05.08 19:06) [7]

А, тогда не новость. Но хочется надеяться, что автор эту переменную не менял.

> zorik

Или менял?


 
Anatoly Podgoretsky ©   (2008-05-20 21:09) [9]

> Юрий Зотов  (20.05.2008 19:02:05)  [5]

Это не потокобезопасная переменная, глобальное и есть некоторое количество кривых компонент, да и советы типа измени переменную DecimalSeparator.
С данной переменной Борланд уже давно не рекомендует работать и у него уже есть потокобезопасные методы.
Значение надо считывать в локальную переменную функциями АПИ сразу перед использованием и ни секундой раньше.


 
zorik ©   (2008-05-20 22:24) [10]

Переменную не менял. Да Office русский


 
Юрий Зотов ©   (2008-05-20 22:42) [11]

> zorik ©   (20.05.08 22:24) [10]

Если не менял, то DecimalSeparator должен возвращать системную установку для текущего юзера. И оффис должен брать ее же - то есть, теоретически проблем быть не должно.

Но в русском оффисе 2003 я однажды напоролся на баг локализации - там жестко прописана запятая (по крайней мере, в значениях межстрочных интервалов). Раз так, то возможно, что этот баг не единственный.


 
zorik ©   (2008-05-21 09:00) [12]

спасибо, если есть баги, то осталяю так как есть все.


 
tormoz   (2008-05-21 10:47) [13]

var tRg: TRegistry;
begin
 tRg := TRegistry.Create;
 tRg.RootKey := HKEY_CURRENT_USER;
 if tRg.OpenKey("\Control Panel\International",False) then
   begin
     Result := tRg.ReadString("sDecimal");
     tRg.CloseKey;
   end;
 tRg.Free;
end;


 
zorik ©   (2008-05-22 10:28) [14]


> tormoz   (21.05.08 10:47) [13]

спасибо



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

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

Наверх




Память: 0.49 MB
Время: 0.049 c
15-1209900866
REA
2008-05-04 15:34
2008.06.15
Ищем Grid


2-1211283647
Сергей
2008-05-20 15:40
2008.06.15
Код


15-1209542589
Дмитрий С
2008-04-30 12:03
2008.06.15
Что за база и чем ее можно открыть?


2-1211305467
Magos
2008-05-20 21:44
2008.06.15
Задействование клавиши бэкспэйс в данном случае


2-1211539949
StiTch
2008-05-23 14:52
2008.06.15
E-Mail