Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2012, 23:48   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А можно ли извлечь из DateTimePicker отдельно год, не вводя новых переменных?
если в вашем C++ Builder есть библиотека DateUtils - то смотрите в её сторону.
Только функция YearOf (ну или как она там у вас называется), всё равно внутри себя создаст три переменные, а вернёт Вам только нужное - в данном случае, год.
Если такой библиотеки нет, то напишите свою функцию (всего пара строк кода), которая будет возвращать год по дате.

И смело используйте переменные, несколько байт, временно выделенные в стеке, ровным счётом ни на что не влияют - этим методом можно смело пользоваться!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2012, 00:21   #12
m-d-k
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 32
По умолчанию

Просто у меня проблема с DateTimePicker!

В режиме dmUpDown не считывается время (дата считывается):

void __fastcall TForm1::DateTimePicker1Change(TObje ct *Sender)
{
unsigned short year,month,day,hour,min,sec,ms;
DateTimePicker1->Date.DecodeDate(&year,&month,&day) ;
DateTimePicker1->Date.DecodeTime(&hour,&min,&sec,&m s);
Label1->Caption=IntToStr(day); //считывается!
Label2->Caption=IntToStr(min); //не считывается!
}

Может, подскажете, в чем ошибка?
m-d-k вне форума Ответить с цитированием
Старый 19.05.2012, 12:06   #13
m-d-k
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 32
По умолчанию

Как я выяснил, надо просто перед считыванием переключать программно DateTimePicker1 в соответствующий режим даты или времени.
Но как это сделать?
m-d-k вне форума Ответить с цитированием
Старый 19.05.2012, 13:22   #14
m-d-k
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 32
По умолчанию

Программно тоже почему-то свойства работают корректно только отдельно.
В режиме dmUpDown не меняется ни дата, ни время:

unsigned short year,month,day,hour,min,sec,ms;
DateTimePicker1->Kind = dtkDate;
DecodeDate(DateTimePicker1->Date,year,month,day) ;
DateTimePicker1->Kind = dtkTime;
DecodeTime(DateTimePicker1->Time,hour,min,sec,ms);
Label1->Caption=IntToStr(day);
Label2->Caption=IntToStr(min);


Если оставить только один из режимов Kind, то все работает!
m-d-k вне форума Ответить с цитированием
Старый 22.05.2012, 18:48   #15
m-d-k
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 32
По умолчанию

Еще одна проблема при работе с DateTimePicker - различные значения секунд!

void __fastcall TForm1::DateTimePicker1Change(TObje ct *Sender)
{
float md;
unsigned short hour,min,sec,ms;
DecodeTime(DateTimePicker1->Time,hour,min,sec,ms);
md=float(sec)/86400+15078;
Label1->Caption=FloatToStr(md); //работает неправильно!
Label2->Caption=FloatToStr(float(sec)/86400+15078); //работает правильно
}

Что неправильно в первом варианте?
m-d-k вне форума Ответить с цитированием
Старый 23.05.2012, 14:24   #16
m-d-k
Пользователь
 
Регистрация: 01.05.2012
Сообщений: 32
По умолчанию

Разобрался!
Замена на double помогла!
m-d-k вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дата в DateTimePicker из БД SQL DirtyBASS C/C++ Базы данных 1 13.04.2012 17:20
DatetimePicker fakel-v Помощь студентам 0 11.12.2011 15:29
Дата введённая "ручками" и дата полученная по ссылке kzld Microsoft Office Excel 0 06.05.2011 14:45
Вычитание дат(дата-дата=кол.дней) zallza Общие вопросы Delphi 1 31.05.2010 22:50
Дата Конечная (ДД.ММ.ГГГГ) - Дата Начальная (ДД.ММ.ГГГГ) = Количество Месяцев stanislav24 Microsoft Office Excel 5 20.12.2008 10:36