![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разное "поведение" date() на XP и Win7 [D7, XP, 2003]
Дмитрий © (2014-08-07 15:39:00)Разное "поведение" date() на XP и Win7
Столкнулся с разнинецей в отчетах при формировании в одной и той же версии, но в разных ОС.
Получаю через компонент TMonthCalendar дату:
...
frmDate.Calendar.Date:=date();
frmDate.ShowModal;
result:=frmDate.Calendar.Date;
...
На Вин7/х64 дата почему-то включает компоненту времени, которая равна текущему.
На ХП нет.
В чем причина? Откуда появляется текущее время?
Дмитрий (2014-08-27 13:13:00) [1]календарь не для заставки, а для задачи, в ч-ти выбор интервала отчетного периода
заставка для контроля запускаемой версии
Inovet (2014-08-26 18:36:00) [2]> [7] Дмитрий (26.08.14 18:30)
> в заставке выводится дата и время компиляции
Календарь здесь зачем вообще?
junglecat (2014-08-26 18:34:00) [3]> [7] Дмитрий (26.08.14 18:30)
календарь - это обертка над стандартным виндовым контролом. Видимо, в вин7 он по дефолту включает текущее время, если оно не задано явно.
как вариант - TDate(Trunc(MonthCalendar1.Date))
Дмитрий (2014-08-26 18:30:00) [4]
> думаю или прграмма (код, версия)все таки разная
для проверки я запускаю из публичной папки на сервере один и тот же экзешник
в заставке выводится дата и время компиляции
> этот код отрабытывает на разных машинах по разному?
на машинах с ХР и Вин7 этот код отрабатывает одинаково
---------------------------
26.08.2014 18:25:10 <-> 26.08.2014
---------------------------
OK
ВладОшин (2014-08-10 10:41:00) [5]
> Какие настройки локали смотреть?
про дату, наверное
но не уверен
думаю или прграмма (код, версия)все таки разная
> var
> D: TDate;
> begin
> D := Date;
> MonthCalendar1.Date := D;
> ShowMessageFmt('%s <-> %s',[DatetimeToStr(MonthCalendar1.
> Date),DatetimeToStr(D)]);
этот код отрабытывает на разных машинах по разному?
Дмитрий (2014-08-07 19:02:00) [6]>Настройки локали? Все-таки код другой?
Какие настройки локали смотреть?
Код более подробно
...
var
res, dfirst : Variant;
...
dfirst := GetNeedDate('Укажите дату начала периода');
if VarIsNull(dfirst) then exit;
SaveToLog(' Начало: ' + QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', dfirst)) ); // <-- тут обнаруживается разница
...
adq.ParamByName('FirstDate').Value:=dfirst;
...
end;
//-------------------------------------------------------
function GetNeedDate (Caption : String = '') : variant;
begin
result:=null;
frmDate:=TfrmDate.Create(Application);
frmDate.Caption:= Caption;
frmDate.Calendar.Date:=date();
frmDate.ShowModal;
if frmDate.ModalResult = mrOK then
result:=frmDate.Calendar.Date;
end;
ВладОшин (2014-08-07 18:32:00) [7]procedure TCommonCalendar.SetDate(Value: TDate);
begin
ReplaceTime(TDateTime(Value), FDateTime);
и .т.д...
а FDateTime при создании := now
а вот почему на XP без времени - странно. Настройки локали? Все-таки код другой?
ВладОшин (2014-08-07 18:26:00) [8]дело не в date()
var
D: TDate;
begin
D := Date;
MonthCalendar1.Date := D;
ShowMessageFmt('%s <-> %s',[DatetimeToStr(MonthCalendar1.Date),DatetimeToStr(D)]);
надо смотреть как MonthCalendar1 с датой работает
Дмитрий (2014-08-07 18:21:00) [9]одинакова - 1049
ВладОшин (2014-08-07 16:41:00) [10]локаль одинакова?