Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Напоминание о наступлении события 
:(
    Опции темы
rsm
Дата 25.9.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(sim7 @ 24.9.2005, 18:09)
Что подскажете?

Однако ж и наворотили кода! smile Всего одну строчку нужно добавить:
Код

...
        szTime = lbTime->Items->Strings[i];

        szTime.SetLength(19); // берем только первые 19 символов, т.е. дату и время

        if(!TryStrToDateTime(szTime, DateTime))
...


Это сообщение отредактировал(а) rsm - 25.9.2005, 16:00
PM MAIL   Вверх
Mysterio
Дата 25.9.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Планирующий
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.12.2004

Репутация: нет
Всего: нет



exellent





***Sorry for terrible english. My native language is C++

PM MAIL   Вверх
mr.Anderson
Дата 26.9.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



В общем и целом, код ниже работает:
Код
 
 AnsiString szTime;
 TDateTime DateTime;
 int i;
 i = ListBox1->Items->Count;
 if(!i) return;
 while(i--)
 {
  szTime = ListBox1->Items->Strings[i];
  szTime.SetLength(18);
  if(!TryStrToDateTime(szTime, DateTime)) return;
  if(DateTime <= Now())
  {
   Timer->Enabled=false;
   ShowMessage("Событие наступило!");
   ListBox1->ItemIndex=i;
   ListBox1->Top=i;
   Timer->Enabled=true;
   return;
  }
 }

Только еще одна проблема. Как видно из кода, мне не нужно удалять сообщение из списка. Мне нужно только сообщить о его наступлении и выделить его. Приведенный же выше код продолжает сообщать о наступлении этого события.
Возникает две необходимости:
1. Сделать так, чтобы напоминание возникало только один раз.
2. Сделать так, чтобы "напоминальщик" не напоминал о событиях, которые были уже давно (но это необязательно).
Значит, надо сделать №1 из вышесказанного. Не подскажете, как? Хоть намекните, а то вы все за меня делаете... smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 28.9.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



А что это вдруг все замолчали? smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
BreakPointMAN
Дата 28.9.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



Цитата(sim7 @ 28.9.2005, 20:09)
А что это вдруг все замолчали?

не в обиду будет сказано... просто я вот так со стороны смотрю... ты сам хоть чего-нибудь пишешь? ибо последние пару месяцев я видел только посты с готовыми решениями на твои вопросы...


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
mr.Anderson
Дата 30.9.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Цитата
не в обиду будет сказано

Я не обижаюсь. Вы все правильно подметили. Я это тоже заметил. Но если я просто не знаю, как это написать? Если бы я хоть примерно знал, я бы и не спрашивал...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 2.10.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Попробовал прервать постоянное напоминание вот таким вот образом:
Код

AnsiString szTime;
 TDateTime DateTime;
 int i;
 bool stop=false;
 i = ListBox1->Items->Count;
 if(!i) return;
 while(i--)
 {
  while(!stop)
  {
   szTime = ListBox1->Items->Strings[i];
   szTime.SetLength(18);
   if(!TryStrToDateTime(szTime, DateTime)) return;
   if(DateTime <= Now())
   {
    Timer->Enabled=false;
    ShowMessage("Событие наступило!");
    ListBox1->ItemIndex=i;
    ListBox1->Top=i;
    Timer->Enabled=true;
    stop=true;
    return;
   }
  }
 }

Однако, цикл все равно продолжается. Почему так?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
rsm
Дата 2.10.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(sim7 @ 26.9.2005, 22:40)
1. Сделать так, чтобы напоминание возникало только один раз.
2. Сделать так, чтобы "напоминальщик" не напоминал о событиях, которые были уже давно

Всего одно условие изменить нужно:
Код

   if(DateTime == Now())    
   {

Воистину, сразу видно, что написано чужими руками, без подключения собственной головы.

Цитата(sim7 @ 2.10.2005, 12:06)
Однако, цикл все равно продолжается. Почему так?

Потому что переменная stop локальная, ее значение устанавливается заново при каждом входе в функцию.
PM MAIL   Вверх
mr.Anderson
Дата 2.10.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Цитата
Всего одно условие изменить нужно

Я думал над этим. Правда, думал. Я просто хотел, чтобы кто-нибудь это подтвердил.
Цитата
локальная

Тогда ее можно объявить как static, тогда все будет нормально, да?
В принципе, я сделал немного по-другому. Вот так:
Код

 AnsiString szTime;
 TDateTime DateTime;
 int i;
 i = ListBox1->Items->Count;
 if(!i) return;
 while(i--)
 {
  szTime = ListBox1->Items->Strings[i];
  szTime.SetLength(18); // берем только первые 18 символов, т.е. дату и время
  if(!TryStrToDateTime(szTime, DateTime)) return;
  if(DateTime <= Now())
  {
   Timer->Enabled=false;
   CheckBox1->Checked=false;
   MessageBox(NULL,"Одно из указанных в списке событие наступило! В списке заданное на это время событие было выделено.","Информация",MB_ICONINFORMATION);
   ListBox1->ItemIndex=i;
   ListBox1->TopIndex=i;
   if(MessageBox(NULL,"Вы должны удалить наступившее событие, иначе вы не сможете снова включить напоминания (программа будет постоянно напоминать об уже прошедшем событии). Удалить событие? Если вы отвечаете \"Нет\", то вам придется сделать это вручную.","Информация",MB_ICONQUESTION|MB_YESNO)==IDYES)
   {
    ListBox1->Items->Delete(i);
    MessageBox(NULL,"Наступившее событие было успешно удалено. Напоминания включены.","Информация",MB_ICONINFORMATION);
    CheckBox1->Checked=true;
    Form1->ListBox1->Items->SaveToFile("do.txt");
   }
   else MessageBox(NULL,"Удаление события отменено. Напоминания выключены.","Информация",MB_ICONINFORMATION);
   return;
  }
 }

Добавлено @ 11:38
Но, думаю, все же ваш вариант лучше. Или оставить как есть? Мне в принципе и так и так нравится...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
rsm
Дата 2.10.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(sim7 @ 2.10.2005, 13:37)
Тогда ее можно объявить как static, тогда все будет нормально, да?

Нормально будет только в случае, если объявишь переменную как глобальную.
PM MAIL   Вверх
AntonChik
Дата 4.10.2005, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



2Sim7: удивляюсь...удивляюсь... буквально развел чуваков... на 2 страницы резину растянул... как же ты "опытным"-то стал??? (не в обиду будет сказано) Но твою фразу "Сложная, наверное, задачка" я расцениваю как насмешку... Не, я понимаю если б ты числился новичком, хотя ладно - тема-то закрыта smile

--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
mr.Anderson
Дата 4.10.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Я, извиняюсь, опытный по количеству сообщений. Эти звания придумал не я и не вы, и не мне и не вам их оценивать! А в программировании я еще вовсе не считаю себя опытным, как вы сказали, я знаю прекрасно, что я новичок! У вас, может быть, все хорошо получается, а вот у меня туговато, особенно без учителя! Так что не надо меня ругать. Сам недоволен. smile
Закрывайте тему, вроде, все выяснили.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
AntonChik
Дата 5.10.2005, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



приношу свои извинения
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
_hunter
Дата 5.10.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



оценивать может и не нам, но судят то по ним. и соответственно помогают как опытному...

P.S.
попроси у модераторов чтобы статус сменили на "не опытный" smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
mr.Anderson
Дата 5.10.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 3
Всего: 128



Цитата
приношу свои извинения

Ладно, мир. smile
Цитата
попроси у модераторов чтобы статус сменили на "не опытный"

А можно? Ладно, тогда это мысль. Сейчас найдем кого-нибудь...

P.S. Модераторы, закройте тему! А то мы и я в частности не удержимся от оффтопа...


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.