Конференция "Начинающим" » ShortDateFormat переменная [WinXP]
 
  • гия (08.10.12 15:01) [0]
    Здравствуйте
    Может быть мой вопрос не совсем по теме. Если так то поправьте пожалуйста.
    Пишу программу в Дельфи ХЕ под Windows XP. Програма работает в сети.
    В обработчике OnCreate главной формы первыми командами написаны:
    ShortDateFormat:= 'dd-MM-yyyy';
    DateSeparator:= '-';

    У пользователей в разных компьютерах формат даты для Windows установлен по разному и многие пользователи отказываются менять его, говоря что другие программы (в основном Excel) подстроены под другой формат.
    Однако в некоторых компьютерах программа дату выводит в тот формат, какой написан в программе, независимо от того какой формат стоит для Windows. А вот в некоторых упорно выводит в Windows формате, игнорируя значение ShortDateFormat:= 'dd-MM-yyyy';
  • Плохиш © (08.10.12 15:15) [1]
    Application.UpdateFormatSettings=false;
  • гия (08.10.12 15:38) [2]
    Уточните пожалуйста
    после

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

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

    Application.UpdateFormatSettings=false;?
  • Dmitriy (09.10.12 17:53) [3]

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


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

    Типа
    Label1.Caption := FormatDateTime('dd-MM-yyyy  h "hours" n "min" s "sec" ', Now);
  • DVM © (10.10.12 00:04) [4]

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

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

    Лучше использовать локально нужный формат или форматировать самому.
  • Германн © (10.10.12 01:54) [5]

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

    +1
  • Плохиш © (10.10.12 02:19) [6]
    Все подобные поделки летят в корзину, ибо программа должна показывать дату, время, валюту в том виде, в каком я хочу их видеть. 21 век уже на дворе.
  • Андреевич (28.10.12 18:58) [7]
    Все подобные ораторы должны быть уволены и отправлены на плантации дабы не повышать энтропию. Ну и чтобы не чувствовали себя телепатами, это лечится электрошоком.
    Потом может дойдет, что кроме как "показать" есть еще другая работа, например парсинг входных данных из внешнего источника, который диктует необходимый формат.
  • Андреевич (28.10.12 18:58) [8]
    хотя зачем на плантации, в биоректор сразу - 21 век на дворе.

    ЗЫ не сильно грубо?
  • DVM © (28.10.12 22:59) [9]

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


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

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

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

    я то беру, а сторонний dcu? :)
  • Германн © (29.10.12 01:37) [11]

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

    А на компьютере при этом может одновременно работать более одной программы, которые пытаются установить свои настройки форматов таким вот брутальным способом. :)
    Про пользователя я уже молчу. (((
  • Германн © (29.10.12 02:02) [12]
    Кстати для парсинга стоит самому написать функцию типа StrToDateTimeFormat.
 
Конференция "Начинающим" » ShortDateFormat переменная [WinXP]
Есть новые Нет новых   [134431   +9][b:0][p:0]