Текущий архив: 2003.01.23;
Скачать: CL | DM;
Вниз
Изменение DecimalSeparator Найти похожие ветки
← →
Chubais (2003-01-10 10:16) [0]Во время работы программы по невыясненным причинам меняется DecimalSeparator и выскакивают глюки. При запуске устанавливаю в точку, программа работает какое-то время. И иногда при активации приложения разделитель устанавливается в запятую (системная установка), получается ошибка. Такое ощущение, что при переходе в мое приложение из других, где действуют системные установки, разделитель-запятая подтягивается в мое приложение...
Как побороть? Не выставлять же во всех обработках задание DecimalSeparator?
← →
Johnmen (2003-01-10 10:28) [1]Как было выявлено сиё странное поведение ?
← →
Mike Kouzmine (2003-01-10 10:37) [2]Я может и ошибаюсь, но для того, чтобы приложение видело изменение системных установок, оно должно быть перезапущено, так как все эти переменные инициируются один раз при запуске, хотя, я опять повторяю, могу ошибаться.
← →
Delirium^.Tremens (2003-01-10 10:47) [3]UpdateFormatSettings property (TApplication)
Specifies whether format settings are updated automatically when the user alters the system configuration.
По умолчанию - true, попробуй выставить в false;
← →
Chubais (2003-01-10 11:08) [4]2 Johnmen © (10.01.03 10:28)
при работе с программой ))) в одно окно зайдешь, в другое, возвращаешься в свою программу - и тут же сообщение об ошибке (там на гриде в обработке OnGetCellParams расчет стоит)
2 Mike Kouzmine (10.01.03 10:37)
системные установки не меняются
просто мой разделитель не совпадает с системным (это я делаю при запуске), а потом при переключении в свое приложение уже совпадает - не всегда, как Вынь на душу положит
Delirium^.Tremens © (10.01.03 10:47)
спасибо, попробую
← →
Anatoly Podgoretsky (2003-01-10 11:21) [5]Эта переменная не Thread Safe
← →
Johnmen (2003-01-10 11:52) [6]>Chubais © (10.01.03 11:08)
>там на гриде в обработке OnGetCellParams расчет стоит
Подробности ?
← →
Chubais (2003-01-10 12:25) [7]2 Johnmen © (10.01.03 11:52)
procedure TMyForm.DBGridEh1Columns1GetCellParams(Sender: TObject;
EditMode: Boolean; Params: TColCellParamsEh);
begin
if (Params.Text<>"") and (Params.Text<>"0")
then Params.Text:=Format("%8.2f",[расчет числа]);
end;
в расчете используется конвертация строки в число, там и возникает ошибка
← →
Johnmen (2003-01-10 12:50) [8]>Chubais © (10.01.03 12:25)
Тогда понятно...
Известная фича процедуры конвертации - в ней используется системный десятичный сепаратор, а не тобой установленный. В отличие от контролов.
← →
Delirium^.Tremens (2003-01-10 13:16) [9]Johnmen © (10.01.03 12:50)
Если речь идет о StrToFloat(), то ничего подобного за ней не замечал. Уточни, пожалуйста, про которую из всех перезагруженных версий идет речь?
← →
Anatoly Podgoretsky (2003-01-10 13:30) [10]Для Format такого не должно происходить
For all floating-point formats, the actual characters used as decimal and thousand separators are obtained from the DecimalSeparator and ThousandSeparator global variables.
Но тут не приведена необзодимая информация "в расчете используется конвертация строки в число, там и возникает ошибка", нет самого куска где происходит ошибка, подземный стук однако.
← →
Johnmen (2003-01-10 15:25) [11]Я имел в виду следующее :
Фича -
Для отображения данных в гриде всегда используется установленный программно десятичный сепаратор, а для контроля вводимых данных всегда используется системный десятичный сепаратор. А они могут не совпадать...
← →
Игорь Шевченко (2003-01-10 15:54) [12]Johnmen © (10.01.03 15:25)
Где такая трава растет ? :-)
← →
Johnmen (2003-01-10 16:05) [13]>Игорь Шевченко © (10.01.03 15:54)
В TDBGrid и аналогах в саду D5, D6.
← →
Игорь Шевченко (2003-01-10 16:22) [14]Johnmen © (10.01.03 16:05)
Ткни в меня местом в исходнике VCL, плз.
← →
Паша (2003-01-10 18:07) [15]Единственное место нашел, на которое можно грешить (Delphi4)
Forms.pas
function TApplication.CheckIniChange
.............
WM_WININICHANGE:
begin
if UpdateFormatSettings then
begin
SetThreadLocale(LOCALE_USER_DEFAULT);
!!! GetFormatSettings;
end;
но это ж как туда можно влезть?
← →
Johnmen (2003-01-12 02:06) [16]>Игорь Шевченко © (10.01.03 16:22)
>Ткни в меня местом в исходнике VCL, плз.
В какое именно ? :)))
И почему возникает такое желание ?
Страницы: 1 вся ветка
Текущий архив: 2003.01.23;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.008 c