Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Формат даты


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]

Второй, перегруженый формат функции.


Наверх

Титульная страница Поиск, карта сайта Написать письмо