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

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

Работа с датой-временем. [D2005]


oleg1963lora ©   (2010-02-15 12:17:00) 

Здравствуйте уважаемые Мастера!
Имею две переменных

DateStart : TDateTime;
DateCurr  : TDateTime и два компонента

InDate : TDateTimePicker;
InTime : TDateTimePicker;
Присваиваю
 DateStart:=InDate.Date;
 DateStart:=InTime.Time;
{Проверка показывает правильные значения и даты и времени в DateStart}
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет. В чем моя ошибка?


12   (2010-02-15 15:52:00) [1]


> Куала-Лумпур

ну там же Лумпукул очень дешевый


Ega23   (2010-02-15 15:49:00) [2]


> И все. Достиг результата другой дорогой :-)
> За подсказки всем СПАСИБО!


Цель: Путешествие из Петербурга в Москву.
Ты его достиг другой дорогой, попутно завернув в Нью-Йорк, Сидней и Куала-Лумпур.
Но достиг, это да.  :)


oleg1963lora   (2010-02-15 15:43:00) [3]

Вобщем выкрутился. Смотрите, что вышло.

type DateTimeArray = record
    Date  : string;
    Time  : string;
end;

var
  Level : array [1..8] of Levels;
  DateStart : DateTimeArray;
  DateCurr  : DateTimeArray;

implementation
procedure TForm1.RunGenerateClick(Sender: TObject);
{Запуск процесса генерации, создания таблиц, установки первоначального времени}
begin
 DateStart.Date:=DateToStr(InDate.Date);
 DateStart.Time:=TimeToStr(InTime.Time);
 DateCurr:=DateStart;
 CurrentDate.Text:=DateCurr.Date;
 CurrentTime.Text:=DateCurr.Time;
end;

И все. Достиг результата другой дорогой :-)
За подсказки всем СПАСИБО!


Ega23   (2010-02-15 15:34:00) [4]


> DateStart:=InDate.Date + InTime.Time;


Ну или так.


Ega23   (2010-02-15 15:32:00) [5]


> ДатаСтарт:=Дата+время. Оказывается не все так просто


Просто нужно чётко понимать, что такое тип данных TDateTime.
Целая часть - количество дней, прошедших с 30.12.1899
Дробная чать - часы-минуты-секунды-миллисекунды

Поэтому рецепт таков:
Кидаем на форму 2 TDateTimePicker. Одному тип (или что там?) pkDate, второму - pkTime (вроде так, точно не помню).
Финальная дата будет выглядеть

var
 dt : TDateTime
begin
 dt := DateTimePicker1.Date + (DateTimePicker2.DateTime - Trunc(DateTimePicker2.DateTime));
 ShowMessage(FormatDateTime('dd.mm.yyyy hh:nn:ss', dt);
end;


12   (2010-02-15 15:28:00) [6]


> DateStart:=InDate.Date;
> DateStart:=InTime.Time;


да, ибо написали же

> потому что вторым присваиванием затираешь значение присвоенное
> первым...

но я о другом :)
Ладно, проехали

так вот надо
DateStart:=InDate.Date + InTime.Time;


oleg1963lora   (2010-02-15 15:19:00) [7]

Т.Е. конструкция такого вида в принципе не верна

DateStart:=InDate.Date;
DateStart:=InTime.Time; ? И сохранится последнее(то есть время), что я и наблюдаю.Дата временами вылезает установленная по умолчанию -1899 год
А я-то по наивности думал, что можно ввести что-то вроде
ДатаСтарт:=Дата+время. Оказывается не все так просто


12   (2010-02-15 14:49:00) [8]


> Разве весь компонент не копируется?

нет

  d1.DateTime:=strtodatetime('01.02.2010 14:12');
  d2.DateTime:=strtodatetime('11.03.2009 11:22');
  showmessage(datetimetostr(d1.DateTime)+' -----'+datetimetostr(d2.DateTime));
  d1:=d2;

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

  showmessage(datetimetostr(d1.DateTime)+' -----'+datetimetostr(d2.DateTime));


Ega23   (2010-02-15 14:30:00) [9]

Обрати внимание, что у тебя стоит в TDateTimePicker.Date


oleg1963lora   (2010-02-15 14:09:00) [10]

Может я неправильно выразился.
InDate.Date = '01.02.2010'
InTime.Time = '13:00'.
DateStart содержит правильные значения, а в DateCurr получаю
'27.01.2010' и '13:00' соответствено. Как такое может быть? Разве весь компонент не копируется? Что-то я не догоняю((


Ega23   (2010-02-15 12:34:00) [11]


> что-то не очень-то верится...


Он DefaultDate просто не поменял.


{RASkov}   (2010-02-15 12:32:00) [12]

> [0] oleg1963lora   (15.02.10 12:17)
> { Проверка показывает правильные значения и даты и времени в DateStart }
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет.

что-то не очень-то верится...


{RASkov}   (2010-02-15 12:24:00) [13]

потому что вторым присваиванием затираешь значение присвоенное первым....


Наверх

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