![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формат даты
cyber-pilot © (2009-07-07 16:11:00)При запуске программы я задаю формат даты с помощью переменной ShortDateFormat и DateSeparator:
ShortDateFormat := 'dd.MM.yyyy';
DateSeparator := '.';
И все работает хорошо. Но если после запуска программы в "Панели управления" -> "Язык и региональные стандарты" поменять формат даты например на такой dd/MM/yy,
то при конвертации строк в даты возникают ошибки, например здесь:
vDate := StrToDate('20.06.2009');
выдается ошибка "'20.06.2009' is not a valid date."
Как сделать, чтобы формат даты был жестко заданным или как перехватить событие изменения формата даты в системе?
cyber-pilot (2009-07-07 17:58:00) [1]
> Плохиш © (07.07.09 17:41) [9]
Спасибо! Работает!!!
Плохиш (2009-07-07 17:41:00) [2]
> cyber-pilot (07.07.09 16:11)
>
>
Application.GetFormatSettings := false;
Плохиш (2009-07-07 17:41:00) [3]
> GetFormatSettings
читать как UpdateFormatSettings :-)))
clickmaker (2009-07-07 17:22:00) [4]> [6] cyber-pilot (07.07.09 17:11)
ну, у программистов не на Дельфи может не быть под рукой такой удобной переменной ShortDateFormat.
Вот и меняют системный )
cyber-pilot (2009-07-07 17:11:00) [5]
> clickmaker © (07.07.09 16:47) [5]
Ничего смешного, такой способ устанавливает формат даты только внутри программы. Системный не трогает.
clickmaker (2009-07-07 16:47:00) [6]> либо какие-то программы
> При запуске программы я задаю формат даты с помощью переменной
> ShortDateFormat и DateSeparator:
>
> ShortDateFormat := 'dd.MM.yyyy';
> DateSeparator := '.';
:)
cyber-pilot (2009-07-07 16:46:00) [7]
> Юрий Зотов © (07.07.09 16:37) [3]
В том то и проблема. Системные установки почему-то иногда меняются. Либо сами пользователи меняют, что вряд ли, либо какие-то программы.
Юрий Зотов (2009-07-07 16:37:00) [8]Если не делать ничего, то автоматически будут использованы системные установки. Что и требуется.
cyber-pilot (2009-07-07 16:32:00) [9]
> Anatoly Podgoretsky © (07.07.09 16:15) [1]
>
> Второй, перегруженый формат функции.
Типа вот так:
function StrToDate(const S: String): TDate;
begin
ShortDateFormat := 'dd.MM.yyyy';
DateSeparator := '.';
Result := SysUtils.StrToDate(S);
end;
А есть какой-нибудь другой способ, а то тут лишние операции выполняются. Хоть и не очень заметно, но неприятно.
Anatoly Podgoretsky (2009-07-07 16:15:00) [10]Второй, перегруженый формат функции.