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

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

ShortDateFormat переменная [WinXP]


гия ©   (2012-10-08 15:01:00) 

Здравствуйте
Может быть мой вопрос не совсем по теме. Если так то поправьте пожалуйста.
Пишу программу в Дельфи ХЕ под Windows XP. Програма работает в сети.
В обработчике OnCreate главной формы первыми командами написаны:
ShortDateFormat:= 'dd-MM-yyyy';
DateSeparator:= '-';

У пользователей в разных компьютерах формат даты для Windows установлен по разному и многие пользователи отказываются менять его, говоря что другие программы (в основном Excel) подстроены под другой формат.
Однако в некоторых компьютерах программа дату выводит в тот формат, какой написан в программе, независимо от того какой формат стоит для Windows. А вот в некоторых упорно выводит в Windows формате, игнорируя значение ShortDateFormat:= 'dd-MM-yyyy';


Германн   (2012-10-29 02:02:00) [1]

Кстати для парсинга стоит самому написать функцию типа StrToDateTimeFormat.


Германн   (2012-10-29 01:37:00) [2]


> кроме как "показать" есть еще другая работа, например парсинг
> входных данных из внешнего источника, который диктует необходимый
> формат.

А на компьютере при этом может одновременно работать более одной программы, которые пытаются установить свои настройки форматов таким вот брутальным способом. :)
Про пользователя я уже молчу. (((


antonn   (2012-10-28 23:20:00) [3]


> Берешь системный, копируешь себе, меняешь в своей переменной
> формат и используешь ЛОКАЛЬНО как я и написал выше.
>

я то беру, а сторонний dcu? :)


DVM   (2012-10-28 22:59:00) [4]


> Андреевич   (28.10.12 18:58) [7]


>  например парсинг входных данных из внешнего источника,
> который диктует необходимый формат.

Речь не о том, зачем это делается, речь о том как. Запомни раз и навсегда, нельзя менять значения ShortDateFormat:= 'dd-MM-yyyy' и DateSeparator:= '-', т.к. данные переменные глобальные (в последних делфи получим предупреждение насчет этого) и неизвестно к каким последствиям это приведет. Для тех кто желает сильно использовать ShortDateFormat и т.д. отличные от системных, есть перегруженные варианты функций, принимающие одним из аргументов именно твой формат. Берешь системный, копируешь себе, меняешь в своей переменной формат и используешь ЛОКАЛЬНО как я и написал выше.


Андреевич   (2012-10-28 18:58:00) [5]

Все подобные ораторы должны быть уволены и отправлены на плантации дабы не повышать энтропию. Ну и чтобы не чувствовали себя телепатами, это лечится электрошоком.
Потом может дойдет, что кроме как "показать" есть еще другая работа, например парсинг входных данных из внешнего источника, который диктует необходимый формат.


Андреевич   (2012-10-28 18:58:00) [6]

хотя зачем на плантации, в биоректор сразу - 21 век на дворе.

ЗЫ не сильно грубо?


Плохиш   (2012-10-10 02:19:00) [7]

Все подобные поделки летят в корзину, ибо программа должна показывать дату, время, валюту в том виде, в каком я хочу их видеть. 21 век уже на дворе.


Германн   (2012-10-10 01:54:00) [8]


> форматировать самому.
>

+1


DVM   (2012-10-10 00:04:00) [9]


> В обработчике OnCreate главной формы первыми командами написаны:
>
> ShortDateFormat:= 'dd-MM-yyyy';
> DateSeparator:= '-';

Так лучше не делать, т.к. 1) - не потокобезопасно 2) - может найтись еще один такой же умный компонент или модуль который поменяет еще раз и привет.

Лучше использовать локально нужный формат или форматировать самому.


Dmitriy   (2012-10-09 17:53:00) [10]


> в некоторых упорно выводит в Windows формате, игнорируя
> значение ShortDateFormat:= 'dd-MM-yyyy';


Используй функцию FormatDateTime и будет тебе щасте

Типа
Label1.Caption := FormatDateTime('dd-MM-yyyy  h "hours" n "min" s "sec" ', Now);


гия   (2012-10-08 15:38:00) [11]

Уточните пожалуйста
после

ShortDateFormat:= 'dd-MM-yyyy';
DateSeparator:= '-';

должен написать

Application.UpdateFormatSettings=false;?


Плохиш   (2012-10-08 15:15:00) [12]

Application.UpdateFormatSettings=false;


Наверх

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