![]() |
|
|
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Задачка. Юзверь вводит в Edit1 время события, а в Edit2 само событие, что несущественно. Причем, дата заранее неизвестна, и дат может быть несколько. Дата вводится в формате
Надоть при наступлении этого события вывести либо звуковой сигнал, либо сообщение. Сначала, по логике, надо бы свернуть программку в трей, чтоб глаза не мозолила. Это я уже сделал. А вот с напоминалкой проблема... Кстати, напоминаловку надо включать/выключать по свойству Checked флага CheckBox1... Сложная, наверное, задачка... Но мне жизненно необходимо решение. Прошу помочь! |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
делаешь таймер на t-t0 (t - нужное время, t0 - текущее время)
при его срабатывании показываешь сообщение... если время слишком большое (не помню ограничений для таймеров), делаешь таймер на максимально допустимый интервал, а по его прошествии запускаешь еще раз... -------------------- qqq |
|||
|
||||
| _hunter |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
будем считать что дату ты распарсил.
тогда береш локальное время:
потом переводиш его:
и приводиш его к LARGE_INTEGER ( заполнив LowPart dwLowDateTime и HighPart dwHighDateTime ) это будет time1 потом заполняеш структуру:
и переводиш ее сначала в FILETIME потом в LARGE_INTEGER. это будет time2 (time2.QuadPart - time1.QuadPart) / 10000.0 -- время в миллисекундах, на которое нужно установить таймер ( можно виндовый SetTimer() можно делфийский TTimer() ( лучше второй, потому как у него есть Enabled ) ) -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||
|
|||||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
если checkbox сняли - отменяешь таймер
если установили - устанавливаешь -------------------- qqq |
|||
|
||||
| rsm |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Проверку времени (типа там if(MyTime == Now()) наверняка в таймере делать будешь. Вот и пиши:
Это сообщение отредактировал(а) rsm - 21.9.2005, 18:49 |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
_hunter, это для какого ж профессионала вы код дали? Я ж начинающий, а вы мне WinAPI даете.
rsm, можно еще разок объяснить, как установить таймер на введенное время с учетом введенного формата + как я уж говорил, может быть несколько дат. И на каждую надо напоминалку. А сколько дат будет - неизвестно. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
А я бы вместо таймера для этого дела отдельную нить организовал.
|
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Можно. Методика такова: 1. Подсчитывается количество миллисекунд в заданном времени; 2. Подсчитывается количестко миллисекунд в текущем времени; 3. Разница между этими величинами устанавливается в качестве интервала для таймера. Я предлагаю значительно более простой вариант, см. в аттаче исходники. Это сообщение отредактировал(а) rsm - 22.9.2005, 10:55 Присоединённый файл ( Кол-во скачиваний: 9 )
simple_timer.zip 3,77 Kb |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
rsm, в вашем коде более-менее разобрался, но у вас в ЛистБоксе заранее известно, что будет только дата. А как быть, если там еще и посторонний текст? Например, у меня вот такая строчка:
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
копируй первые 18 символов...
или все, до ":::" - 1 символ все, в общем-то, зависит от тебя: какой формат ввода разрешиш -- тот и парсь... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| rsm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 999 Регистрация: 16.3.2005 Репутация: нет Всего: 62 |
Главная проблема в том, что стандартных функций для форматированного перевода строки в дату просто нет. Нужно писать такую функцию самому. Причем не забывать, что формат даты зависит от текущей локали, например в Европе принят формат MM/DD/YYYY, а у нас - DD/MM/YYYY. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
То, что надо скопировать, я понял и так. Но как скопировать AnsiString-строку? Функция C++ copy работает только со string-строками. Это сообщение отредактировал(а) sim7 - 23.9.2005, 19:44 |
|||
|
||||
| szz |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 1 Всего: 33 |
Вот так к примеру:
теперь у тебя date и message содержат то что надо. --------------------
|
||||||
|
|||||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Вот тут ошибка. Понятно, почему: у Strings надо указать позицию. А какая тут нафиг позиция? Цель: обработать все Item у ЛистБокса на предмет наличия наступившей даты, если я правильно понял код rsm'а... Что подскажете? |
|||
|
||||
| Mysterio |
|
|||
![]() Планирующий ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 28.12.2004 Репутация: нет Всего: нет |
А кто тебе мешает перейти в Char? Или я плохо понял задачу?
Например так:
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |