Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];
Внизразделитель дробной части Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c