Текущий архив: 2007.01.14;
Скачать: CL | DM;
Вниз
Странное поведение ShortDateFormat Найти похожие ветки
← →
Andrey Prokopovich (2006-11-23 23:28) [0]Подскажите пожалуйста, как решить следующую проблему:
Имеется приложение интенсивно использующее переменые типа TDateTime и соответственно операции конвертирования DateTime в String.
При инициализации приложения устанавливаю глобальные переменные:
DateSeparator := "-";
ShortDateFormat := "yyyy/mm/dd";
Но в процессе работы программы без какой либо выявленной закономерности ShortDateFormat иногда принимает значение "dd.MM.yyyy".
Может ли windows влиять на эти переменные в приложении? Рассылая сообщения или еще как-то... Если, да, то как с этим бороться?
Заранее спасибо!
← →
KilkennyCat © (2006-11-24 00:29) [1]> как с этим бороться?
ну, перед каждым использованием вызвать заново установку формата.... хотя я такого глюка не встречал.
← →
Anatoly Podgoretsky © (2006-11-24 00:32) [2]> KilkennyCat (24.11.2006 0:29:01) [1]
Бывает в посторонних компонентах, они точно также меняют и не восстанавливают, или скажем ProcessMessages
← →
KilkennyCat © (2006-11-24 00:54) [3]> Anatoly Podgoretsky © (24.11.06 00:32)
Да, я потом тоже подумал о processmessages
← →
Германн © (2006-11-24 01:08) [4]
> как с этим бороться?
Я предпочитаю пользоваться функцией FormatDateTime всегда.
← →
Andrey Prokopovich (2006-11-24 01:33) [5]
> Я предпочитаю пользоваться функцией FormatDateTime всегда.
Именно ей я и пользуюсь, но проблема несколько глубже (исключение возникает при попытке конвертирования строки в дату в компоненте бд)
FormatDateTime("d.mm.yy h:mm", IBQuery1.FieldByName("FIELDNAME").AsDateTime)
поле БД "FIELDNAME" типа string
← →
Германн © (2006-11-24 01:38) [6]
> но проблема несколько глубже (исключение возникает при попытке
> конвертирования строки в дату в компоненте бд)
Ну а почему не написал этого в сабже? Этож совсем другой коленкор!
← →
Andrey Prokopovich (2006-11-24 01:48) [7]
> а почему не написал этого в сабже?
Сорри.
Дык, все работает 99% времени, но в один прекрасный момент ShortDateFormat вдруг принимает значение "dd.MM.yyyy". И всё. Полазил по исходникам используемых компонент, вроде нигде они не меняют.
Кстати, а каким боком тут ProcessMessages, расскажите плиз.
← →
Германн © (2006-11-24 01:56) [8]
> Сорри.
> Дык, все работает 99% времени, но в один прекрасный момент
> ShortDateFormat вдруг принимает значение "dd.MM.yyyy". И
> всё. Полазил по исходникам используемых компонент, вроде
> нигде они не меняют.
>
> Кстати, а каким боком тут ProcessMessages, расскажите плиз.
>
>
Из справки:
The SysUtils unit includes a number of variables that are used by various formatting routines. Values are assigned to these variables to define the formats of numeric and date/time strings. The initial values of these variables are fetched from the system registry using the GetLocaleInfo function in the Win32 API. VCL (non-console) applications automatically update these formatting variables in response to WM_WININICHANGE messages. The Application variable’s UpdateFormatSettings method either allows or disallows changes in system settings. The default is True. Set this property to False to prevent the system settings from changing.
← →
Anatoly Podgoretsky © (2006-11-24 07:38) [9]> Andrey Prokopovich (24.11.2006 1:48:07) [7]
При том, что после него может быть выполнено что угодно.
← →
Andrey Prokopovich (2006-11-24 10:25) [10]
> The Application variable’s UpdateFormatSettings method either
> allows or disallows changes in system settings
Вот, это оно! А казалось, что искал везде :)
Всем Спасибо, за ответы.
← →
Loginov Dmitry © (2006-11-24 15:05) [11]Такая же беда была на работе с DecimalSeparator. Ставлю точку. Некоторое время работает, потом бах - и становится как в винде - ",". Лечится установкой разделителя в винде с помощью функции SetLocaleInfo при запуске приложения.
← →
Andrey Prokopovich (2006-11-24 22:59) [12]
> Лечится установкой разделителя в винде с помощью функции
> SetLocaleInfo при запуске приложения
Уж лучше по аналогии с UpdateFormatSettings при инициализации программы установить: Application.UpdateMetricSettings := False
Страницы: 1 вся ветка
Текущий архив: 2007.01.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.049 c